【问题标题】:What is the proper entry point, when compiling java to jar?将 java 编译为 jar 时,正确的入口点是什么?
【发布时间】:2016-06-25 00:59:55
【问题描述】:

所以,当我编写我的 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 位?)

【问题讨论】:

    标签: java jar compilation


    【解决方案1】:

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

    jar cvfm Program.jar Manifest.txt program
    

    其中program 是包含Program.class 的文件夹。您的清单可以单独使用,但也需要包含在编译中。

    【讨论】:

      猜你喜欢
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多