在将java编译为jar时,正确的入口点是什么?

时间:2016-06-24 16:23:50

标签: java jar compilation

所以,当我写我的java文件时:

public class Program
{
public static void main(String[] args)
{
System.out.println("Serious business logic.");  
}
}

然后在windows cmd中,我这样编译:

javac Program.java
jar cfe Program.jar Program Program.class
java -jar Program.jar

没关系,结果是:

  

“严肃的商业逻辑。”

在Netbeans中我创建了一个项目,它添加了这一行:

package program;

我无法在cmd中编译,只能在IDE中编译。 我已经尝试过manifest.txt,没有BOM的UTF8编码,以及文件和文件的换行符。

Manifest.txt:

Main-Class: program.Program  
  • “jar cvfm Program.jar Manifest.txt Program.class”

并且没有manifest.txt,只在cmd program.Program

  • “jar cfe Program.jar program.Program Program.class”

当我试图跑步时:

java -jar Program.jar

导致:

  

“错误:无法找到或加载主类程序。程序”

我已经查看了以下网站:
http://www.skylit.com/javamethods/faqs/createjar.html
https://docs.oracle.com/javase/tutorial/deployment/jar/build.html
并且不知道该怎么做。你能帮帮我吗? 如何使用package关键字进行编译?什么是正确的切入点?

谢谢!

(ps jre1.8.0_91; jdk1.8.0_66我应该对jre和jdk使用相同的32位还是64位?)

1 个答案:

答案 0 :(得分:1)

确保在将程序编译为JAR时,Program.class位于名为program的文件夹中。 Netbeans在脚本开头添加的package关键字告诉可执行文件它位于名为program的文件夹中。如果您只是添加类文件而不确定它是否在正确的包(文件夹)中,它将无法正常运行,因为它不知道在哪里找到它。您的命令应更改为:

jar cvfm Program.jar Manifest.txt program

其中program是包含Program.class的文件夹。您的清单可能会被单独留下,但也需要包含在编译中。