【问题标题】:No main found when executing jar执行jar时找不到main
【发布时间】:2012-03-17 14:46:34
【问题描述】:

http://pastebin.com/1btVw8Cb

上面的代码中有两个类。

上面是我的代码,当我在 Eclipse 中运行时运行良好,在 Netbeans 中也运行良好。

我正在尝试创建一个独立的应用程序,一个 jar 文件。

当我将 jar 翻倍时出现的错误是:

找不到主类:NewJFrame。程序将会退出。 我从命令提示符中得到以下信息:

E:\Java Programs\Eclipse Workspace\test3\src\test3>java testT.jar
Exception in thread "main" java.lang.NoClassDefFoundError: testT/jar
Caused by: java.lang.ClassNotFoundException: testT.jar
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: testT.jar.  Program will exit.

我按照这里的命令:"Could not find the main class: XX. Program will exit." 所以这就是我在命令 promt 中输入的内容来创建我的 jar:

E:\Java Programs\Eclipse Workspace\test3\src\test3>jar cfm MyJar.jar manifest.tx
t *.class SINGLE.TXT

http://imgur.com/a/wlCpc#SYR3L

上面我拍了一些照片来展示这个过程。

所以我认为当我执行 javac 时问题可能是错误?但它在 netbeans 和 eclipse 中构建并运行良好>

【问题讨论】:

  • java testT.jar 尝试在名为 testT 的包中运行名为 jar 的类。
  • maifest.mf 文件呢?里面提到过主类吗?

标签: java jar javac


【解决方案1】:

您需要使用-jar 标志。

java -jar MyJar.jar

http://docs.oracle.com/javase/tutorial/deployment/jar/run.html

JAR 文件作为应用程序

您可以使用 Java 解释器运行 JAR 打包的应用程序。基本命令是:

java -jar jar-file

-jar 标志告诉解释器应用程序以 JAR 文件格式打包。您只能指定一个 JAR 文件,该文件必须包含所有应用程序特定的代码。

http://docs.oracle.com/javase/tutorial/deployment/jar/modman.html 解释了如何将清单放入 jar 中。

m 选项表示您希望将现有文件中的信息合并到您正在创建的 JAR 文件的清单文件中。

【讨论】:

  • 那行不通。我得到了以下信息:pastebin.com/npm3ksNd 另外,我希望这个应用程序能够通过双击它来运行,因为我打算把它变成一个小程序。
  • 您确定您的主类在 test3 包中并且名为 NewJFrame?
  • 是的,如果你看一下我的截图,你会看到 NewJFram 在那里,如果你点击 pastebin 的链接,你会在那里看到 main 方法。
  • @NomanArain,Main-Class 清单条目中的类名称应为 test3.NewJFrame 而不是 test3/NewJFrame
  • Mike 我将我的 mainifest 更改为 Main-Class: test3.NewJFrame 但它仍然给我同样的错误,找不到 main。错误:找不到主类:test3.NewJFrame。程序将退出。
【解决方案2】:

它现在正在工作。我没有改变任何东西,也许记忆被扭曲了,这就是它给我带来问题的原因。我认为重新启动计算机是修复它的方法。但是,是的,我不确定出了什么问题,尽管它现在工作正常。所以谢谢你们的帮助

【讨论】:

    【解决方案3】:

    添加

    Main-class: Splash
    

    清单文件的一部分。设置 Main 类名而不是 Splash

    这样就行了……

    【讨论】:

      猜你喜欢
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 2016-11-16
      • 2016-02-16
      • 2014-11-28
      • 2011-05-06
      相关资源
      最近更新 更多