Eclipse知识集锦
快捷键 | 说明 |
Ctrl + Shift + T | 打开一个类型,甚至是位于JAR中的类文件,依据文件名搜索 |
Ctrl + Shift + R | 打开任意一个文件,依据文件名搜索 |
Ctrl + 1 | 快速修复 |
Ctrl + Shift + O | 清理Java import |
Ctrl + O | 快速大纲,可以快速定位到当前文件中的某个结构 |
Alt + Left / Right | 切换编辑器标签页 |
Ctrl + Shift + Up / Down | 在上下一个类成员之间切换 |
F3 | 转到类型定义处 |
Ctrl + / | 生成/解除单行注释 |
Ctrl + Shift + / | 生成/解除注释块 |
F4 | 显示Type Hierarchy视图 |
Ctrl + W | 关闭当前编辑页签 |
Ctrl + Shift + W | 关闭所有编辑页签 |
Ctrl + L | 定位到某一行 |
Ctrl + Shift + F | 格式化代码 |
Ctrl + F | 查找和替换 |
Ctrl + D | 删除行 |
Ctrl + Q | 返回最近编辑的地方 |
Ctrl + T | 快速类型层次,立即显示选中类型的继承结构 |
Ctrl + E | 快速切换到其它编辑器页签,支持搜索 |
Ctrl + . / , | 快速定位到当前文件下一个/上一个警告或错误 |
Ctrl + Alt + H | 显示选中方法被调用的层次 |
Ctrl + Shift + P | 定位到匹配的括号 |
Alt + Shift + J | 为类、方法、字段等添加JavaDoc |
Ctrl + Shift + L | 显示快捷键列表,再次按此组合键打开Preferences |
具体报错日志:java.lang.NullPointerException at org.eclipse.wst.validation.internal.DependencyIndex.clear
原因:工作区.metadata\.plugins\org.eclipse.wst.validation\dep.index文件损坏导致
解决:删除dep.index
定位到:%ECLIPSE_WORKSPACE_DIR%\.metadata\.plugins\org.eclipse.debug.core\.launches,搜索对应的*.launch文件,删除即可。
解决:%WORKSPACE_DIR%\.metadata\.plugins\org.eclipse.core.resources下的.snap文件删除
报错信息:unable to validate weblogic domain
解决办法:增加JDK系统属性 -Dsun.lang.ClassLoader.allowArraySyntax=true
Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.7:add-source (execution: default, phase: generate-sources)
解决办法:根据提示安装m2e connector build-helper-maven-plugin
Windows7支持把同类型的任务栏图标进行分组、合并,这样可以让任务栏比较清爽。我习惯于这种图标合并的功能,除了需要频繁切换的、同时打开多个的IDE。
为了能让每个Eclipse显示单独的图标,一开始我尝试使用win7appid修改快捷方式上的Application User Model Id,遗憾的是Eclipse在启动后,会自动修改此ID为Eclipse。没办法,只好自己写了一段程序,在后台周期性调用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
#include "stdafx.h" #include "Shellapi.h" #include "Psapi.h" #include "wchar.h" #include "propsys.h" #include "Propvarutil.h" #include "propkey.h" #include <iostream> using namespace std; #define MAX_PROCS 1024 #define NAME_BUF_SIZE 1024 struct handle_data { unsigned long process_id; HWND best_handle; }; BOOL is_main_window( HWND handle ) { return GetWindow( handle, GW_OWNER ) == ( HWND )0 && IsWindowVisible( handle ); } BOOL CALLBACK enum_windows_callback( HWND handle, LPARAM lParam ) { handle_data& data = *( handle_data* )lParam; unsigned long process_id = 0; GetWindowThreadProcessId( handle, &process_id ); if( data.process_id != process_id || !is_main_window( handle ) ) { return TRUE; } data.best_handle = handle; return FALSE; } HWND find_main_window( unsigned long process_id ) { handle_data data; data.process_id = process_id; data.best_handle = 0; EnumWindows( enum_windows_callback, ( LPARAM )&data ); return data.best_handle; } void set_app_user_model_ids() { DWORD proc_ids[MAX_PROCS] = {0}; DWORD pBytesReturned; EnumProcesses( proc_ids, MAX_PROCS, &pBytesReturned ); DWORD proc_count = pBytesReturned / sizeof( DWORD ); wcout << "Process count: " << proc_count << endl; WCHAR buf[NAME_BUF_SIZE]; //iterate over all local processes for( DWORD i = 0; i < proc_count; i++ ) { HANDLE hdl = OpenProcess( PROCESS_ALL_ACCESS, FALSE, proc_ids[i] ); wmemset( buf, 0, NAME_BUF_SIZE ); //query binary file path DWORD buf_size = NAME_BUF_SIZE; if( QueryFullProcessImageName( hdl, 0, buf, &buf_size ) ) { //filter by filename LPWSTR eclipse = wcsstr( buf, L"eclipse.exe" ); if( eclipse ) { HWND hwnd = find_main_window( proc_ids[i] ); wcout << "Eclipse window found: " << buf << endl; IPropertyStore* store = NULL; SHGetPropertyStoreForWindow( hwnd, IID_IPropertyStore, ( void** )&store ); PROPVARIANT propvar; InitPropVariantFromString( buf, &propvar ); store->GetValue( PKEY_AppUserModel_ID, &propvar ); swprintf( buf , NAME_BUF_SIZE, L"%d", hwnd ); //if appid already changed, just do nothing //otherwise the taskbar icon flickers during each invocation if( propvar.pwszVal && wcsstr( propvar.pwszVal, buf ) ) continue; swprintf( buf , NAME_BUF_SIZE, L"eclipse-%d", hwnd ); InitPropVariantFromString( buf, &propvar ); wcout << "Change AppUserModelId to " << buf << endl; store->SetValue( PKEY_AppUserModel_ID, propvar ); } } } } int _tmain( int argc, _TCHAR* argv[] ) { set_app_user_model_ids(); return 0; } |
链接时,需要额外的库:Shlwapi.lib、psapi.lib
Leave a Reply