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

标签 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

没问题,结果是:

"Serious business logic."

当我在 Netbeans 中创建项目时,它会添加以下行:

package program;

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

list .txt:

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

并且没有manifest.txt,只是在cmd程序中

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

当我尝试运行时:

java -jar Program.jar

结果是:

"Error: Could not find or load main class program.Program"

我已经检查过以下网站:
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 位吗?)

最佳答案

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

jar cvfm Program.jar Manifest.txt program

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

关于java - 将 java 编译为 jar 时,正确的入口点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38018006/

相关文章:

java - 根据条件在ant中复制文件

java - 计算目录中 MP4 文件的总持续时间时出现 SLF4J 问题

c - 如何使用Makefile编译并运行这个C程序?

java - 使用 dex2jar 和 jd-gui 编辑后构建 .APK?

java - 尝试了解 Java 泛型

java - Liferay 新 portlet vs 插件项目区别

c# - c# 和 java 的 volatile 关键字的行为是否相同?

java - 使用 Java 保存 Word 文件(可运行的 JAR)

c - 谁决定寄存器存储类的实际存储?

java - 我需要升级我的一个正则表达式