【问题标题】:JAVA swing application+executing jarJAVA swing应用+执行jar
【发布时间】:2025-12-27 00:40:12
【问题描述】:

我是 Java 编程的新手。我在 ubuntu 中下载了 netbeans (java EE) 包,并编写了一个简单的 swing 应用程序,可以在 netbeans 上运行良好。我尝试按照 netbeans 的建议通过键入“java -jar”从终端运行它,但出现“找不到主类”错误。所以我尝试使用 echo $CLASSPATH 检查类路径,但一无所获。然后我使用 $ set CLASSPATH= 设置类路径。当我再次尝试“java -jar”时,我得到了同样的错误(找不到主类)。即使我尝试设置类路径,echo $CLASSPATH 仍然没有给出任何结果。请帮助!提前致谢

【问题讨论】:

    标签: java jar


    【解决方案1】:

    提供图形界面的入口点。我通常称这个类为 Main

    public class Main
    {
        public static void main(String[] args) {
    
               java.awt.EventQueue.invokeLater(new Runnable() {
                       public void run() {
                           new MyJFrame();
                       }
                   });  
              }
    }
    

    接下来,单击文件选项卡(在左上角的项目选项卡旁边)并查找名为 Mainfest.mf 的文件。您需要向该文件添加 Main-Class: 属性。

    主类:主要

    这告诉 jar 在双击或从命令行运行时要执行什么。

    【讨论】:

      【解决方案2】:

      我不使用 Netbeans,但我知道在使用 -jar 选项时,java 在命令行上想要什么。

      一种可能性是 jar 的清单缺少 Main-class 声明。这个声明告诉了当使用-jar 调用选项时程序的入口点应该在哪里。它指定具有main 方法的特定类。

      要验证我所说的是这种情况,请在 Netbeans 生成的 jar 上尝试以下操作(我假设 bash shell 因为您的问题中有 $ 提示......如果我'我错了):

      $ jar xf my.jar META-INF
      $ cat META-INF/MANIFEST.MF | grep Main-Class
      

      如果那是空的,或者没有命名您的类,那么您的下一个 SO 问题可能是“我如何告诉 Netbeans 在制作 jar 时哪个类是入口点”。

      【讨论】: