这取决于您的文件在 jar 中的位置以及您如何指定类路径。不幸的是,您没有向我们提供有关您的结构等方面的太多信息。所以我创建了这个示例,希望您可以将其应用于您的项目:
假设您Test
在包中有类testapp
(类的全名在前面testapp.Test
):
package testapp;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Test {
private static final Logger logger = Logger.getLogger(Test.class.getName());
public static void main(String[] args) {
Properties properties = new Properties();
try {
properties.load(new FileInputStream("testapp/infor.properties"));
System.out.println("" + properties.getProperty("a"));
} catch (IOException e) {
logger.log(Level.SEVERE, "", e);
}
}
}
您在某个目录 PROJECT_ROOT 中。现在在这个目录中你有上面编译的类(在目录 testapp,因为你的类的全名是testapp.Test
)。您的结构如下所示:
PROJECT_ROOT
testapp
Test.class
infor.properties
请注意,该类已经编译(您可能知道该怎么做?)。当您的工作目录是 PROJECT_ROOT 时,您可以运行:
jar -vcf myjar.jar *
这将创建一个名为myjar.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。