使用Notepad ++编译Java代码

我一直在尝试将Notepad ++设置为一个小Java环境,主要用于学习Java,因为我在使用NetBeans时遇到一个简单的程序有些困难,遗憾的是,设置Notepad ++以调用Java代码的所有建议都不起作用。

我猜notepad ++已经改变,或者Java开发工具包已被大规模修改,因为我使用的所有示例都会导致错误,即使几乎没有错误的余地。

开始我发现这个网站: http : //blog.sanaulla.info/2008/07/25/using-notepad-to-compile-and-run-java-programs/

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

javac “$(FILE_NAME)” 

 java “$(NAME_PART)” 

运行生成的字节代码,但这完全没有成功。 Java已正确设置,我可以通过CMD调用Java程序来完成它的工作。

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

 cd “$(CURRENT_DIRECTORY)” javac $(FILE_NAME) java $(NAME_PART) 

Notepad ++中控制台的错误是:

 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 ++来编译和运行代码会很容易和有趣,但它似乎互联网上的所有文档都已过时,因为没有任何作用。

我想从Notepad ++中编写和运行Java代码

我可以使用CMD,但我更愿意将它集成到记事本++中

感谢您提供任何帮助。 欢呼:)

编辑:我使用的是最新版本的Java,notepad ++和Windows 7

编辑2:代码:

  //A Very Simple Example class ExampleProgram { public static void main(String[] args){ System.out.println("I'm a Simple Program"); } } 

与Eclipse或Netbeans等IDE相关联的“学习曲线”最初主要涉及您已经拥有的内容 – 设置类路径,环境变量等的知识。 而不是Notepad ++(我喜欢它,但它不是为Java制作的),我建议使用Eclipse,特别是如果你有一台可怕的PC(它有点内存饥饿)。 除了设置路径之外,在此之后您将准备好摇滚。

Eclipse正在积极开放地开发,是目前记录最多的IDE之一。 教程必须正确地工作:)。 但说真的,这很不错。 然后当你想用Java或其他类型的Java编程扩展到Android开发时,你只需要加载所需的加载项,你就会大笑。 它还支持调试,其中Notepad ++肯定无法与之竞争。

可能会将最后一行更改为:

 java -cp . $(NAME_PART) 

会为你工作。 问题是您没有设置类路径。

Notepad ++可以用于编译单个文件项目。 除此之外,您将需要一个IDE或至少与ant而不是java编译器集成。

在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 

我同意接受的答案但我有时会使用Textpad快速编写/编译/运行小型java程序。 Textpad具有此内置function(工具/外部工具)。 如果您没有看到此选项,我认为您必须转到配置/首选项/工具并添加它们。 然后你可以按Ctrl-1编译,然后按Ctrl-2运行。 这对于非常小的快速测试,没有库或任何东西都很有用。

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

我最近遇到了Windows 7 64位的这种情况。 Notepad ++是一个32位程序,因此Windows在其上启用了“文件系统重定向”及其插件(包括NppExec),根据http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187 (v = vs.85).aspx 。 我还安装了最新的64位JDK 8.xx,但安装了早期的32位JRE 7.xx。

现在,JRE 7.xx安装程序在其C:\ Windows \ system32中放置了一个java.exe副本(或者我没有检查过硬链接) – 实际上是C:\ Windows \ SysWOW64 \ java.exe。 这不在像cmd.exe这样的64位应用程序的PATH中,而是在32位应用程序的(重定向)PATH中。

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

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

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

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

我和你的情况类似,

我正确编译并运行cmd中的“hello world”应用程序,但在notepad ++中,我只能进行编译但不能运行类文件。

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

在cmd调制解调器中,系统在PATH中称为javac.exe和java.exe,notepad ++在PATH中称为javac.exe,因为system32中没有javac而system32中没有java.exe。 (您可以在记事本++中运行“javac -version”和“java -version”来查找)

所以我删除了system32中的java.exe,然后npp编译并运行完美。

希望这可以帮助任何人。

你可以在notepad ++的“run”模块中使用这个小代码:

 cmd /k "cd /D "$(CURRENT_DIRECTORY)" & java "$(NAME_PART)"" 

注意:这是他们用于在notepad ++中运行python的几乎相同的代码解决方案,如本主题中所述: 如何在Notepad ++中执行Python文件?

我发现此链接很有用。

但是,NppExec似乎带有自己的JRE,因此我将脚本更改为此(意味着您需要对Java位置进行硬编码):

 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)