最近用Notepad++写汇编,感觉用起来挺顺手,于是想能不能也在这个优秀的编辑器下编写java并编译运行呢,因为每次启动eclipse都要挺长时间,而且eclipse实在太占内存了。。。

  于是各种百度之后,看网上的教程,使用Notepad++的NppExec(Notepad++的一个插件)实现了这一点。

  附网址:http://jingyan.baidu.com/article/a65957f4fedcc424e67f9bd1.html

      http://jingyan.baidu.com/article/7082dc1c712b77e40a89bd8d.html

教程里基本都是用到了这两个命令:

javac -encoding UTF- "$(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>
 #include <windows.h>
 #include <string>
 #include <sstream>
 #include <fstream>
 using namespace std;

 int main(int argc,char* args[])
 {

   ]),s2(args[]);
   string j;
   j="javac  -d  "+s1+" "+s2;     //javac -d  directory_name  file_name
   cout<<j<<endl;
    system(&j[]);
    system("Pause");
    ;
 }
   //myjava.cpp

 1 #include <iostream>
 #include <windows.h>
 #include <string>
 #include <sstream>
 #include <fstream>
 using namespace std;

 int main(int argc,char* args[])
 {
     string name,name1;
     stringstream tp,tp1;
     ]);
     ;
     ;ind<=ss.length();ind++){
         if(ss[ind]=='\\'||ss[ind]=='\\\\'){
             index=ind;
         }
     }
     ;in<=ss.length();in++){
         tp<<ss[in];
     }
     tp>>name1;
     ;;in++){
         if(name1[in]=='.'){
             break;
         }
         tp1<<name1[in];
     }
     tp1>>name;
     cout<<"class:"<<name<<endl;
     fstream   filestr(args[],fstream::in|fstream::out);
     string s="",t="";
     filestr>>s;
         string j;
         stringstream ss1;
     if(s=="package"){
         filestr>>t;
         int x=t.length();
         t[x-]='\0';
         cout<<"package:"<<t<<endl;
         ss1<<"java "<<t<<"."<<name;         //java package_name.main_class_name
     }
     else{
         ss1<<"java "<<name;          //java main_class_name
     }
     filestr.close();
     j=ss1.str();
     cout<<j<<endl;
     system(&j[]);
     system("Pause");
     ;
 }

把生成的两个EXE文件放在一个文件夹(比如F:\\myshell)里,然后再把这个文件夹添加到系统的PATH环境变量里,

然后打开Notepad++,点击运行菜单中的运行

输入exe的文件名,myjavac后面的两个参数是"$(CURRENT_DIRECTORY)"   "$(FULL_CURRENT_PATH)"

        myjava后面的两个参数是"$(FULL_CURRENT_PATH)"   "$(NAME_PART)"                     (参数之间用空格隔开)

然后点击保存,输入名称,选择快捷键(不选也可以),就可以把自己的命令添加到运行菜单了。

还可以通过修改C++代码或是使用批处理把两个命令合并为一个命令。

/------------------------------------------------------2015.6.27更新-----------------------------------------------------------------------------------/

  发现自己的程序无法应付多个java文件的编译。所以又改写了myjavac.cpp的代码

   //myjavac.cpp

 1 #include <iostream>
 #include <windows.h>
 #include <string>
 #include <sstream>
 #include <fstream>
 using namespace std;

 int main(int argc,char* args[])
 {
     ]);
     string dir="dir "+s1+" /b >java_files.txt";
     cout<<dir<<endl;
     system(&dir[]);
     ];
     ;i<=;i++){
         filenames[i]="";
     }
     fstream file("java_files.txt");
     ;
     while(file.eof()==false){
         file>>filenames[index];
         index++;
     }
     file.close();
     system("del java_files.txt");
     stringstream ss;
     ss<<"javac -d "<<s1<<" ";
     ;;in++){
         if(filenames[in]!=""){
             string temp=filenames[in];
             , temp.length()-,){
                 ss<<filenames[in]<<" ";
             }
         }
         else{
             break;
         }
     }
     string j;
     j=ss.str();
     cout<<j<<endl;
     system(&j[]);
     system("Pause");
     ;
 }

  此时myjavac的参数就只需要  "$(CURRENT_DIRECTORY)"  了。

  至此就实现了

      javac  -d  directory_name  file_name1  file_name2  file_name3...

      java  package_name.main_class_name

  这两个命令。也就能实现绝大多数情况下的Java编译和运行了。

/--------------------------------------------------------------2015.7.2更新--------------------------------------------------------------------/

后天期末考试,这两天紧张复习中。。。压力山大

发现程序似乎依然有小错误,当文件名长度小于5的时候。。。有空再改

notepad++编译并运行java (自定义包)的更多相关文章

  1. Notepad++编译和运行Java

    首先要让Notepad++编译和运行Java,前提是电脑里已经配置好了Java的环境(这里可以参考我博客里关于Java环境配置的那篇随笔). 在Notepad++上面的选项栏中找到 插件---> ...

  2. Notepad++如何编译、运行Java

    首先要让Notepad++编译和运行Java,前提是电脑里已经配置好了Java的环境(这里可以参考我博客里关于Java环境配置的那篇随笔). 在Notepad++上面的选项栏中找到 插件---> ...

  3. Notepad++-第一篇命令行语句执行之编译、运行Java

    1.让Notepad++编译和运行Java,在电脑上要已经配置好了Java的开发环境 2.在Notepad++上面的选项栏中找到 Plugins--->Plugin Admin 3.在Avail ...

  4. [JAVA] 一个可以编辑、编译、运行Java简单文件的记事本java实现

    本来是Java课做一个仿windows记事本的实验,后来突然脑子一热,结果就给它加了一个编译运行Java文件的功能. 本工程总共大约3000行代码,基本上把所学的java界面.文件.控件的功能都包含在 ...

  5. 使用CMD命令编译和运行Java程序

    对于初学者来说,使用CMD命令(Unix以及类Unix系统采用Termial)来编译和运行Java的好处是让初学者直观地体会到编译(Compile)这一步骤,加深记忆.所谓编译就是将文本文件xxx.j ...

  6. 【Java】【转】在命令行中编译和运行java

    原文:http://blog.csdn.net/u010900574/article/details/50792353 同时加载编译多个jar包和java文件 在个人平常使用或者当我们把代码部署到Li ...

  7. 在 Sublime Text 2 中编译和运行 Java 程序,以及输出中文出错问题解决办法

    Sublime Text 2 是我最喜欢用来编码的文本编辑器,如果你尝试使用后相信你也会喜欢上它的.在这篇文章中我们将讨论如何在 Sublime Text 2 中编译和运行 Java 程序. 第一步: ...

  8. 在linux命令行中编译和运行java文件

    同时加载编译多个jar包和java文件 在个人平常使用或者当我们把代码部署到linux服务器上的时候,我们经常需要通过命令行编译和运行java文件,网上关于这个的方法大多是通过 javac -cp f ...

  9. 如何使用命令行编译以及运行java文件

    要想编译和运行java文件,很简单,只需要两个命令: (1) javac:作用:编译java文件:使用方法: javac Hello.java ,如果不出错的话,在与Hello.java 同一目录下会 ...

随机推荐

  1. 15个最佳的代码评审(Code Review)工具

    代码评审可以被看作是计算机源代码的测试,它的目的是查找和修复引入到开发阶段的应用程序的错误,提高软件的整体素质和开发者的技能.代码审查程序以各种形式,如结对编程,代码抽查等.在这个列表中,我们编制了1 ...

  2. RSuite 一个基于 React.js 的 Web 组件库

    RSuite http://rsuite.github.io RSuite 是一个基于 React.js 开发的 Web 组件库,参考 Bootstrap 设计,提供其中常用组件,支持响应式布局. 我 ...

  3. Oracle11gR2用EXP导出时报EXP-00011错误的解决

    C:\>exp businessdata/businessdata file=dropcol.dmp tables=ACSTRULE,ARREARSCFG,ARREARS_REPORT_ACCT ...

  4. 客户端调用服务端webservice的端口问题

    今天有一个同事过来问:他有一个程序在A服务器上调第三方B服务器短信发送服务接口(webservice),无论是否发送成功,服务接口都会返回状态.现在客户要做每一个服务器 做入站端口管控,一切不必要的端 ...

  5. mysql不同版本和存储引擎选型的验证

    Mysql的版本和存储引擎较多,为了选择最适合业务使用的系统,需要进行一定的验证,本文描述mysql的验证过程和思路. 主要涉及: Mysql的版本 v Mariadb v Tokudb v Orac ...

  6. ubuntu下cacti安装配置

    参考文献 http://kling.blog.51cto.com/3320545/1180778 前言: 原本是想源码安装的,但是现在发现还是太麻烦了,就直接通过apt-get install安装了. ...

  7. [Android]解决ClickableSpan中点击后ListView中item的长按冲突的问题

    以下内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3823429.html 项目中碰到一个问题,情景是这样的: 有一个Lis ...

  8. iOS开发之多媒体API (转载)

    视频格式可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类.尽管后者在播放的稳定性和播放画面质量上可能没有前者 优秀,但网络流媒体影像视频的广泛传播性使之正被广泛应用于视频 ...

  9. 【读书笔记】iOS-反溃网络信息改善用户体验

    一,iOS6表视图刷新控件的使用. 二,使用等待指示器控件. 三,使用网络等待指示器. 四,使用MBProgressHUD等待指示器. 参考资料:<iOS网络编程与云端应用-最佳实践>

  10. 网络婚礼之AFNetWorking3.0

    目前使用人数最多的第三方网络库,没有之一.从开始的NSURLConnection到现在的NSURLSession,它都一直保持着与苹果的步调一致,而由它也衍生出大量的相关第三方网络功能库,不仅仅因为他 ...