最近用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_path 14 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_name 23 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++代码或是使用批处理把两个命令合并为一个命令。
时间: 2024-11-06 22:51:56