Java 为jar指定类路径

Java 为jar指定类路径,java,jar,classpath,Java,Jar,Classpath,我正在尝试配置JAR的类路径,以便我的ResourceBundle可以从中获取属性文件 如果我从.class文件运行它并指定-cp标志,它工作正常,System.err.println(System.getProperty(“java.class.path”)将打印-cp标志中指定的路径 如果我尝试为它创建一个jar文件,System.err.println(System.getProperty(“java.class.path”)始终打印jar文件的路径,并且不会拾取属性文件 如果您将其作为j

我正在尝试配置JAR的类路径,以便我的ResourceBundle可以从中获取属性文件

如果我从.class文件运行它并指定
-cp
标志,它工作正常,
System.err.println(System.getProperty(“java.class.path”)
将打印
-cp
标志中指定的路径

如果我尝试为它创建一个jar文件,
System.err.println(System.getProperty(“java.class.path”)始终打印jar文件的路径,并且不会拾取属性文件

如果您将其作为jar文件运行,那么似乎无法指定
-cp
标志(这正是我所希望的,因为切换正在使用的属性文件很常见)。我尝试在jar清单中指定它,但它仍然不起作用

下面是一个测试jar中似乎不起作用的代码和清单:

public final class Test {
    public static void main(final String[] args) {
        System.err.println(System.getProperty("java.class.path"));
    }
}

编辑
原来的路线毫无意义,所以我改了。我想指向ResourceBundle可以在其中找到属性文件的目录。

如果使用-jar,-cp将被忽略:

-jar
执行封装在JAR文件中的程序。第一个论点是 JAR文件的名称,而不是 启动类名。为了这个 选项的清单 JAR文件必须包含一行 表单主类:classname。在这里 classname标识具有
publicstaticvoidmain(字符串[])
args)
用作 应用程序的起点。见 Jar工具参考页和Jar Java教程的踪迹 有关使用Jar的信息 文件和Jar文件清单当您 使用此选项,JAR文件是 所有用户类的源,以及其他 忽略用户类路径设置。


来源:

我将在Java应用程序中读取一个属性(该属性可以指示应该从何处加载资源)

如何执行应用程序的示例如下:
java-Dkey=value-jar application.jar

不能在清单中使用类路径通配符

有关类路径如何工作的更多信息,请参阅:

不支持类路径通配符 在类路径jar清单头中


是的,对于shell,~意味着$HOME,但对于java来说,它并不意味着什么。

问题是我还有一个索引文件。如果你有一个索引文件,那么类路径将被忽略。

我相信我在问题中提到过。写“似乎”和引用引用引用之间有区别:-)你想用“~/*”匹配什么?很好。在那里考试的时候有点傻。如果我给出一个目录或文件的路径,它也不起作用。
Manifest-Version: 1.0
Created-By: 1.6.0_20 (Sun Microsystems Inc.)
Main-Class: Test
Class-Path: /home/ajanuary/Projects/test/