【问题标题】:jar file does not openjar文件打不开
【发布时间】:2012-10-04 20:24:13
【问题描述】:

我为我的项目创建了一个jar文件,但是出现了以下警告,当双击它时,它没有打开

警告:[options] 引导类路径未与 -source 1.6 一起设置 1 个警告

我使用的是 NetBeans 7.0.1 / Windows 7

【问题讨论】:

    标签: java jar manifest executable


    【解决方案1】:

    警告不是必要使其可点击的问题。

    要使 JAR 可执行,您必须在 JAR 的“清单”文件中指定“主”类,例如:

      Manifest-Version: 1.0
      Main-Class: MyMainClass
    

    然后创建 jarfile,指定上面的清单文件。如果手动执行此操作,则类似于:

    jar cvfm myapp.jar myManifest *.class
    

    如果您改为从 NetBeans 创建 JAR,我希望有一个设置:

    更新请参阅Producing executable jar in NetBeans 了解相关信息。

    如果不指定主类,则JAR可以作为库使用,但不能直接作为程序执行,不使用命令行脚本指定运行哪个类,eg

    java -cp myjar.jar com.myco.myproj.MyMainClass
    

    它运行 Java,将您的 jarfile 放在类路径中(即使您的所有类可用)并指定 MyClass 是主类,即您的应用程序的起点。 MyClass 必须定义了 main 方法,否则这将不起作用。

    【讨论】:

    • 对不起我的问题,但是如何在 JAR 的“清单”文件中指定“主”类???
    • 使用其完全限定名称,例如mypackage.myinnerpackage.MyMainClass
    • @DNA :谢谢,但我正在使用 netbeans ,我不知道从哪里更改这些行。
    • 更新了我的答案 - 请参阅this question 的答案,其中解释了如何在 NetBeans 中执行此操作
    • 我不确定你的意思 - 如果你的意思是你希望你的应用程序从 JAR 中加载文件,那么你需要使用 getResource() 方法从类路径,而不是仅仅从 File 对象创建 Stream 或 reader 以从文件系统加载数据。
    【解决方案2】:

    警告表明,编写某些库/依赖项的 Java 版本与编译项目时使用的版本之间可能存在差异。

    根据我的经验,通常可以忽略此警告。但这肯定是轶事。

    将来,可以使用标志 -Xlint:-options 禁用警告 Netbeans 中的“附加编译器选项”。

    更官方的解释可以看here

    【讨论】:

    • 它没有打开以便您可以看到 jar/zip 内容吗?还是不执行?如果你试图让它执行,你需要确保项目是以这种方式编译的。如果它被正确编译并且执行仍然是一个问题,那么我认为你遇到了一个问题,因为你的一个依赖项是为比你的代码编译的旧 JVM 编写的。 (如果是这样,您应该向我们提供更多信息,看看我们是否可以确定哪个库是您的问题,以及是否有适合您的更新版本。)
    • 它不执行。我运行该项目没有错误,它工作正常。 jar 文件存在,但未打开。
    猜你喜欢
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 2011-11-04
    • 2014-11-23
    • 1970-01-01
    • 2012-04-28
    相关资源
    最近更新 更多