它取决于你的文件在jar中的位置以及你如何指定你的类路径。不幸的是,你并没有给我们太多的信息在你的结构等,所以我创造了这个样,你希望可以应用到你的项目:
比方说,你在包testapp
(类的全名具有Test
类是有脱颖而出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
罐子。现在,您可以使用下面的命令
java -cp myjar.jar testapp.Test
它简单地说,(使用-cp myjar.jar
)的类路径是myjar.jar(JVM对于像目录的jar)运行jar文件。
正如你在Test.java中看到的,你有"testapp/infor.properties"
。必须根据使用的类路径指定属性文件的路径。类路径是myjar.jar内容的根。因此testapp/infor.properties。
infor.properties是否真的在jar中?托盘将其重命名为zip并进行查看。 – 2012-04-26 15:36:00
是的,在罐子里。 – Ina 2012-04-27 08:13:17
你如何生成罐子?你使用一些IDE吗?或者你使用'jar'工具吗? – 2012-04-27 08:46:03