標籤:
最近用Notepad++寫彙編,感覺用起來挺順手,於是想能不能也在這個優秀的編輯器下編寫java並編譯運行呢,因為每次啟動eclipse都要挺長時間,而且eclipse實在太占記憶體了。。。
於是各種百度之後,看網上的教程,使用Notepad++的NppExec(Notepad++的一個外掛程式)實現了這一點。
附網址:http://jingyan.baidu.com/article/a65957f4fedcc424e67f9bd1.html
http://jingyan.baidu.com/article/7082dc1c712b77e40a89bd8d.html
教程裡基本都是用到了這兩個命令:
javac -encoding UTF-8 "$(FULL_CURRENT_PATH)"java -cp "$(CURRENT_DIRECTORY)" "$(NAME_PART)"
// Notepad++的環境變數
變數名稱 |
含義 |
FULL_CURRENT_PATH |
檔案路徑名稱 |
CURRENT_DIRECTORY |
檔案目錄 |
FILE_NAME |
檔案全名稱 |
NAME_PART |
檔案名稱 |
EXT_PART |
副檔名 |
然而,我寫的Java代碼裡大都使用了package語句,使用這兩個命令運行時就會出現“找不到或無法載入主類”的錯誤。
最後實在沒辦法,我就用C++寫了兩個程式。
//myjavac.cpp
1 #include <iostream> 2 #include <windows.h> 3 #include <string> 4 #include <sstream> 5 #include <fstream> 6 using namespace std; 7 8 int main(int argc,char* args[]) 9 {10 11 string s1(args[1]),s2(args[2]);12 string j;13 j="javac -d "+s1+" "+s2; //javac -d directory_name file_full_path14 cout<<j<<endl;15 system(&j[0]);16 system("Pause");17 return 0;18 }
//myjava.cpp
1 #include <iostream> 2 #include <windows.h> 3 #include <string> 4 #include <sstream> 5 #include <fstream> 6 using namespace std; 7 8 int main(int argc,char* args[]) 9 {10 string name(args[2]);11 cout<<"name:"<<name<<endl;12 fstream filestr(args[1],fstream::in|fstream::out);13 string s="",t="";14 filestr>>s;15 filestr>>t;16 int x=t.length();17 t[x-1]=‘\0‘;18 cout<<"package:"<<t<<endl;19 filestr.close();20 string j;21 stringstream ss1;22 ss1<<"java "<<t<<"."<<name; //java package_name.class_name23 j=ss1.str();24 cout<<j<<endl;25 system(&j[0]);26 system("Pause");27 return 0;28 }
把產生的兩個EXE檔案放在一個檔案夾(比如F:\\myshell)裡,然後再把這個檔案夾添加到系統的PATH環境變數裡,
然後開啟Notepad++,點擊運行菜單中的運行
輸入exe的檔案名稱,myjavac後面的兩個參數是"$(CURRENT_DIRECTORY)" "$(FULL_CURRENT_PATH)"
myjava後面的兩個參數是"$(FULL_CURRENT_PATH)" "$(NAME_PART)" (參數之間用空格隔開)
然後點擊儲存,輸入名稱,選擇快速鍵(不選也可以),就可以把自己的命令添加到運行菜單了。
還可以通過修改C++代碼或是使用批處理把兩個命令合并為一個命令。
notepad++編譯並運行java (自訂包)