使用记事本++;编译Java代码

使用记事本++;编译Java代码,java,notepad++,Java,Notepad++,我一直在尝试将Notepad++设置为一个小型Java环境,主要是为了学习Java,因为我很难获得一个简单的程序来使用NetBeans,不幸的是,所有关于设置Notepad++以调用Java代码的建议都不起作用 我想记事本++已经改变了,或者Java开发工具包已经被大量修改了,因为我使用的所有示例都会导致错误,尽管几乎没有出错的余地 首先,我找到了这个网站: 这是运行Javac来编译代码的代码: javac “$(FILE_NAME)” //A Very Simple Example c

我一直在尝试将Notepad++设置为一个小型Java环境,主要是为了学习Java,因为我很难获得一个简单的程序来使用NetBeans,不幸的是,所有关于设置Notepad++以调用Java代码的建议都不起作用

我想记事本++已经改变了,或者Java开发工具包已经被大量修改了,因为我使用的所有示例都会导致错误,尽管几乎没有出错的余地

首先,我找到了这个网站:

这是运行Javac来编译代码的代码:

javac “$(FILE_NAME)”
 //A Very Simple Example
 class ExampleProgram {

   public static void main(String[] args){

        System.out.println("I'm a Simple Program");
   }
 }

然而,要运行生成的字节码,这绝对不再成功。Java设置正确,我可以通过CMD调用Java程序来完成它的工作

使用名为npp的插件并通过F6调用并使用此代码运行(在注释中给出)成功地将Java程序编译到正确的.class文件中,但是命令在运行程序时失败

cd “$(CURRENT_DIRECTORY)”
javac $(FILE_NAME)
java $(NAME_PART)
记事本++中控制台的错误有:

java.lang.NoClassDefFoundError: first
Caused by: java.lang.ClassNotFoundException: first
  at java.net.URLClassLoader$1.run(Unknown Source)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
  at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: first.  Program will exit.
Exception in thread "main"
我认为设置Notepad++来编译和运行代码将是简单而有趣的,但它似乎在互联网上的所有文档都过时了,因为没有任何东西可以工作

我想用一种简单的方法从记事本中编译和运行Java代码++

我可以直接使用CMD,但我更希望它能集成到记事本中++

谢谢你的帮助。干杯:)

编辑:我正在使用最新版本的Java、notepad++和Windows7

编辑2:代码:

javac “$(FILE_NAME)”
 //A Very Simple Example
 class ExampleProgram {

   public static void main(String[] args){

        System.out.println("I'm a Simple Program");
   }
 }

可能将最后一行更改为:

java -cp . $(NAME_PART)
我会为你工作的。问题是您没有设置类路径


记事本++适合编译单个文件项目。除此之外,您还需要一个IDE,或者至少与集成,而不是java编译器。

与Eclipse或Netbeans等IDE相关的“学习曲线”最初主要涉及您已经掌握的知识——设置类路径、环境变量等。我推荐Eclipse,而不是Notepad++(我喜欢它,但它不是为Java“制造的”),特别是如果你有一台笨重的PC(它有点内存不足)。除了设置路径,之后你就可以开始摇滚了


而Eclipse正在积极地、公开地开发,这是最有文档记录的IDE之一。这些教程一定能正确使用:)。但说真的,这很不错。然后,当你想用Java扩展到Android开发,或者其他类型的Java编程时,你只需加载所需的插件,你就可以笑了。它还支持调试,Notepad++肯定无法与之竞争。

在java命令中设置类路径,如下所示:

java -classpath “$(CURRENT_DIRECTORY)” “$(NAME_PART)”

尽管我确信您必须使用IDE(NetBeans、Eclipse、IntelliJ IDEA(我使用),但我认为知道并了解您的小示例中的失败之处总是很好的。 对于IDE,编译和运行时环境是配置好的,但是作为开发人员,理解隐藏的基本概念很重要。 反正

从您发布的链接中,以下是您必须定义的环境变量

FULL_CURRENT_PATH: C:\Documents and Settings\Administrator\My Documents\JavaP\ExampleProgram.java
CURRENT_DIRECTORY: C:\Documents and Settings\Administrator\My Documents\JavaP\
FILE_NAME: ExampleProgram.java
NAME_PART: ExampleProgram
EXT_PART:java
确保根据这些设置命名所有,即:

- your source file is under C:\Documents and Settings\Administrator\My Documents\JavaP\
- your source file is named ExampleProgram.java

我同意公认的答案,但有时我会使用它来快速编写/编译/运行小型java程序。 Textpad具有此内置(工具/外部工具)。 如果您没有看到这些选项,我想您必须转到Configure/Preferences/Tools并添加它们。 然后只需按Ctrl-1编译,按Ctrl-2运行。
这对于非常小的快速测试非常有用,没有库或任何东西。

您可以按照上面的建议使用eclipse,只需创建一个java项目。创建项目后,只需将要使用的java文件拖放到项目中,并选择“链接文件”选项。这样,eclipse将创建文件的副本并将其链接到您的文件,这意味着您对一个文件所做的每一个更改都将被复制到另一个文件。

我最近在Windows 7 64位中遇到过这种情况。记事本++是一个32位程序,因此Windows在其及其插件(包括NppExec)上启用了“文件系统重定向”我还安装了最新的64位JDK 8.xx,但安装了早期的32位JRE 7.xx

现在,JRE 7.xx安装程序已经将java.exe的副本(或硬链接,我还没有检查)放在了它的C:\Windows\system32中——实际上是C:\Windows\SysWOW64\java.exe。它不在像cmd.exe这样的64位应用程序的路径中,而是在32位应用程序的(重定向)路径中

然后在我安装JDK 8.xx之后,安装程序没有更新我的路径,因此我将JDK安装位置添加到路径的末尾。从那时起,我观察到的行为是:

  • 从Windows命令提示符(cmd.exe,64位)--javac.exe和java.exe都来自JDK 8.xx位置(C:\Program Files\java\jdk1.8.0_05\bin)
  • 在Notepad++(32位)中,调用了JDK版本的javac.exe,但实际上是从C:\Windows\SysWOW64\java.exe运行java.exe,这导致了这种加载问题

修复方法是更新或删除32位JRE。

您可以尝试为jdk bin路径添加系统环境变量。当我第一次在notepad++上运行java时,我也遇到了类似的问题。

我的情况与您的类似

我在cmd中正确编译并运行了“helloworld”应用程序,但在notepad++中,我只能进行编译,但无法运行类文件

原因是我安装了jdk1.7,将路径设置为jdk1.7,然后我也安装了jdk1.6,因此jdk1.6安装程序将java.exe添加到%systemroot%\System32(x64环境中的SySWOW64),但没有javac.exe

在cmd调制解调器中,系统在路径中称为javac.exe和java.exe,记事本++在路径中称为javac.exe,因为system32中没有javac,system32中没有java.exe。
cd $(CURRENT_DIRECTORY)
C:\App\Java\jdk1.8.0_112\bin\java -version
C:\App\Java\jdk1.8.0_112\bin\javac $(FILE_NAME)
C:\App\Java\jdk1.8.0_112\bin\java $(NAME_PART)