如何设置CLASSPATH以加载相对于jar文件的资源?

时间:2012-10-04 15:58:27

标签: java classpath

我有一些需要在启动时读取文件的jar文件。这些文件位于jar文件旁边的目录中。这是我的目录列表的样子:

code.jar
config/
       confifile.cfg

然后,在命令行提示符下,我将类路径设置为:

set CLASSPATH=./ext/*;./*

然后我运行该程序,但它一直抱怨它找不到“configfile.cfg”。

  找不到

/config/configfile.cfg文件!

此错误来自此代码:

try {
    r = new BufferedReader(new FileReader((String)botinfilename));
    fileName=(String)botinfilename;
}
catch (FileNotFoundException e) {
    System.err.println(botinfilename + " is not found");
}

如果我将/ config目录放在jar文件中,我注意到它有效。但是,如果我将其删除并将其放在jar旁边,它就找不到配置文件。

是否有一些java设置技巧可以使其工作?

编辑1:

我按这样启动我的程序:

  

java StartProgram

1 个答案:

答案 0 :(得分:0)

为了简短起见,我刚刚添加了“-cp”JVM选项。我的问题是我需要将根目录(我的jar和资源所在的位置)添加到我的类路径中。以前我刚刚用*通配符添加了罐子。

java -cp PATH_ROOT_DIR/;PATH_TO_ROOT_DIR/*;PATH_TO_ROOT_DIR/ext/* StartProgram

或者您可以设置类路径

set CLASSPATH=./;./ext/*;./*