Java 找不到添加到.jar的属性
我有一个简单的桌面应用程序。该应用程序有一个名为MyApp.jar的其他应用程序的.jar,在这个jar中有一个带有一个键(infor.properties)的属性文件。应用程序必须生成自己的MyApp.jar,其中属性文件的键是inputText中的字符串,因此我必须更改属性文件。我的问题是,当我生成新的.jar时,这个jar找不到属性文件。我使用它来获取infor.properties的内容:Java 找不到添加到.jar的属性,java,jar,Java,Jar,我有一个简单的桌面应用程序。该应用程序有一个名为MyApp.jar的其他应用程序的.jar,在这个jar中有一个带有一个键(infor.properties)的属性文件。应用程序必须生成自己的MyApp.jar,其中属性文件的键是inputText中的字符串,因此我必须更改属性文件。我的问题是,当我生成新的.jar时,这个jar找不到属性文件。我使用它来获取infor.properties的内容: InputStream in = this.getClass().getClassLoader()
InputStream in = this.getClass().getClassLoader().getResourceAsStream("infor.properties");
Properties prop = new Properties();
prop.load(in);
in.close();
我使用ZipFile和ZipOutStream将每个文件复制到新的.jar,并添加一个新的。文件的新结构new.jar是正确的,但是当我运行新jar时,找不到文件infor.properties。有人知道为什么吗?这取决于文件在jar中的位置以及如何指定类路径。不幸的是,您没有向我们提供有关您的结构等的更多信息。因此,我创建了此示例,希望您能够将其应用于您的项目: 假设您在包
testapp
中有类Test
(类的全名在那里testapp.Test
):
您在某个目录项目的根目录下。现在在这个目录中有了上面编译的类(在目录testapp中,因为类的全名是testapp.Test
)。您的结构如下所示:
PROJECT_ROOT
testapp
Test.class
infor.properties
请注意,该类已经编译(您可能知道如何正确编译?)。当您的工作目录为PROJECT_ROOT时,您可以运行:
jar -vcf myjar.jar *
它将创建一个名为myjar.jar
的jar。现在可以使用以下命令运行jar文件
java -cp myjar.jar testapp.Test
它简单地说(使用-cp myjar.jar
)类路径是myjar.jar(对于JVM,是类似jar的目录)
正如您在Test.java中看到的,您有
“testapp/infor.properties”
。必须根据使用的类路径指定属性文件的路径。类路径是myjar.jar内容的根。因此testapp/infor.properties。infor.properties真的在jar中吗?托盘将其重命名为zip并进行查看。如何生成jar?你使用IDE吗?或者您是否使用jar
实用程序?请查看我的答案,如果您需要更多说明,请告诉我。谢谢
java -cp myjar.jar testapp.Test