编译java代码

编译java代码,java,netbeans,Java,Netbeans,不久前,我用Netbeans编写了一些代码。我最终将代码移动到了一个新的服务器上,我可以远程访问该服务器,并且没有安装netbeans。我最近对代码做了一些更改,并使用此命令进行编译 javac -classpath /home/me/JSAP-2.1.jar /home/me/Fin2/src/fin2/Fin2.java /home/me/Fin2/src/fin2/CommandLine.java /home/me/Fin2/src/fin2/Reader.java /home/me/F

不久前,我用Netbeans编写了一些代码。我最终将代码移动到了一个新的服务器上,我可以远程访问该服务器,并且没有安装netbeans。我最近对代码做了一些更改,并使用此命令进行编译

javac -classpath /home/me/JSAP-2.1.jar /home/me/Fin2/src/fin2/Fin2.java  /home/me/Fin2/src/fin2/CommandLine.java /home/me/Fin2/src/fin2/Reader.java /home/me/Fin2/src/fin2/Manager.java -Xlint
但新代码似乎从未编译过。我得到的输出与更改前相同。 当我以前在旧服务器上遇到这个问题时,我只需打开netbeans并将“主项目”重置为我试图运行的程序,从netbeans内部重新编译,它就会正常工作。如果不这样做,我就不知道如何解决这个问题

当我运行代码时,我使用

 java -jar /home/me/NetBeansProjects/Fin2/dist/Fin2.jar [commandline args]

有人能提些建议吗

您缺少IDE为您所做的一个步骤。您需要从类文件输出创建
jar
文件。看见

由于没有添加a-d,类文件位于源文件的目录中。让我们实际添加一个已编译的输出目录

rm -r /home/me/Fin2/build/
mkdir /homr/me/Fin2/build/
现在让我们将该文件夹添加到javac中,以便在该文件夹中创建类:

javac -Xlint -d /home/me/Fin2/build/ -classpath /home/me/JSAP-2.1.jar /home/me/Fin2/src/fin2/Fin2.java  /home/me/Fin2/src/fin2/CommandLine.java /home/me/Fin2/src/fin2/Reader.java /home/me/Fin2/src/fin2/Manager.java 
最后,我们需要一罐输出。jar文件基本上只是目录的一个zip文件。实际上,您可以将.jar文件作为zip文件打开。您还必须告诉它哪个类有您的主方法入口点

jar cvfe /home/me/Fin2/dist/Fin2.jar [entry point] /home/me/Fin2/build/
现在,运行它时,运行新创建的jar:

java -jar /home/me/Fin2/dist/Fin2.jar [commandline args]

您是否从JAR文件运行代码,并且需要JAR内容以供使用?什么不起作用。输出是什么?它是否创建了一个.class文件?正如Chris Cooper的评论所暗示的,您的问题似乎不在java文件的编译中,而是在编译的类文件的打包中。显示的命令编译这些类。您的问题可能在于如何运行已编译的类。如果您试图从jar文件运行,那么问题是您没有重建jar文件。@dmos我有.class文件。所谓不工作,我的意思是,如果我添加或删除一个print语句,例如,当我尝试重新运行代码时,该更改没有反映出来。如果您正在生成.class文件,那么编译工作正常,问题很可能在于您如何运行这些.class文件(可能您需要将它们放入jar中并放在其他地方?)这一系列步骤似乎对我不起作用。最后一步返回'no main manifest attribute,in/home/me/Fin2/dist/Fin2.jar',更新后在jar命令中包含入口点。您还可以使用自定义清单,而不是jar命令生成的清单。