我的java应用程序可以用java-p-m命令打开,但不能用java-jar或双击打开

我的java应用程序可以用java-p-m命令打开,但不能用java-jar或双击打开,java,netbeans,jar,Java,Netbeans,Jar,我的项目是r0d0t的InfEncoder的编辑版本。你可以在GitHub上找到它 我修改的主要是对Java10的支持,这就是修复损坏的引用和不推荐使用的库。我的当前代码可用 在NetBeans中构建项目时,它显示以下消息: 要在不使用Ant的情况下从命令行运行此应用程序,请尝试: C:\ProgramFiles\Java\jdk-10.0.1/bin/Java-p C:\projects\InfEncoder master\dist\InfEncoder.jar-m InfEncoder“ 该

我的项目是r0d0t的InfEncoder的编辑版本。你可以在GitHub上找到它

我修改的主要是对Java10的支持,这就是修复损坏的引用和不推荐使用的库。我的当前代码可用

在NetBeans中构建项目时,它显示以下消息:

要在不使用Ant的情况下从命令行运行此应用程序,请尝试:

C:\ProgramFiles\Java\jdk-10.0.1/bin/Java-p C:\projects\InfEncoder master\dist\InfEncoder.jar-m InfEncoder“

该命令工作正常并运行代码。然而,我试图通过双击.jar文件或使用java-jar命令来运行该文件,但整个想法是使用Java10运行r0d0t的原始项目

编辑:由于一些不推荐使用的库需要包含在项目中,NetBeans创建了一个模块信息类,该类声明

module InfEncoder {
requires java.activation;
requires java.desktop;
requires java.base;
requires java.logging; }

这可能是命令
-p
“InfEncoder”
作为值的原因。运行项目时,输入模块需要是模块信息中包含引用库的模块。我已经通过在module info类中放入inframe而不是InfEncoder确认了这一点,netbeans给出的命令更改了输入模块。

为了能够使用
Java-jar
命令或双击jar从jar运行Java应用程序,jar的
META-INF/MANIFEST
文件必须包含
Main Class
属性,例如

Main-Class: com.my.App

如果
com.my.App
是包含应用程序主方法的类的完全限定名。

我不愿意访问未知的google drive。所以我看不到代码。你的罐子里是怎么胀气的?你用maven吗?如果你这样做,你应该看看组装或阴影插件。如果没有,您可能会使用IDE的“导出为可运行jar”(或类似)例程。我正在用Netbeans构建我的jar,没有maven。我是新来的,不知道NetBean中有“导出为可运行jar”选项。这可能很有用:谢谢您的帮助。我的清单如下所示:
清单版本:1.0 Ant版本:Apache Ant 1.10.1创建人:10.0.1+10(“Oracle公司”)主类:infencoder.inframe类路径:.lib/*
我确信inframe是我的主类(它包含主方法)。
类路径:.lib/*
条目不正确<代码>类路径不支持通配符,请参阅()。此外,真的有
.lib
目录吗?在库目录前面加一个点是不常见的。顺便问一下,如果您使用
java-jar
命令从命令行运行应用程序,会发生什么?好的,我已经检查了注释掉错误的行是否会有帮助,并且我得出了一个结论,即我对清单所做的更改在我构建项目之后不适用。当我用java-jar编译它时,它会带来我在lib文件夹中包含的未定义类的错误。但是,当使用java-p-m命令时,错误不会出现。这可能是因为(根据文档)您使用的
-p
选项错误:其参数应该是目录列表。我猜JVM是宽容的,忽略了您正在指定一个文件的事实,只使用
C:\projects\InfEncoder master\dist
作为搜索路径(这就解释了为什么如果你的
lib
目录是
dist
的子目录
lib
不是
dist
的子目录,我可以肯定它会工作。命令本身在NetBeans编译器中,所以我假设它没有任何错误。
-p
不是指定mod要加载
-m
的ule是?我猜它读取.jar文件就像读取目录一样,并从中加载模块“InfEncoder”。