在Java VM的-classpath参数中包含单个文件是否正确?
目前的做法是在类路径中包含单个文件(而不是JAR文件,例如配置文件或数据文件)。这被认为是正确的吗?为什么 更新: 发件人: -cp类路径 指定目录、JAR归档和ZIP归档的列表以搜索类文件。类路径条目由分号分隔 (;). 指定-classpath或-cp将覆盖 CLASSPATH环境变量 这个问题也可以解释为这样一个问题:上面列举的目录、JAR归档文件和ZIP归档文件是否包含一个隐式的“而没有其他内容” 更新: 取消接受答案,因为在我更改类路径以包含目录而不是特定文件后,程序开始工作。因此,我正在调查是否涉及其他问题,或者指定单个文件是否有效(或者至少不总是有效) 更新: 发件人: 忽略既不是目录也不是存档(.zip或.jar文件)的类路径项在Java VM的-classpath参数中包含单个文件是否正确?,java,jvm,command-line-arguments,Java,Jvm,Command Line Arguments,目前的做法是在类路径中包含单个文件(而不是JAR文件,例如配置文件或数据文件)。这被认为是正确的吗?为什么 更新: 发件人: -cp类路径 指定目录、JAR归档和ZIP归档的列表以搜索类文件。类路径条目由分号分隔 (;). 指定-classpath或-cp将覆盖 CLASSPATH环境变量 这个问题也可以解释为这样一个问题:上面列举的目录、JAR归档文件和ZIP归档文件是否包含一个隐式的“而没有其他内容” 更新: 取消接受答案,因为在我更改类路径以包含目录而不是特定文件后,程序开始工作。因此,我
类路径包含目录或jar文件类路径包含目录或jar文件如果您的程序使用
Classloader.getResourceAsStream()
(或类似方式)加载这些其他文件,那么将这些文件包含在类路径中是非常有意义的
这是常见的,例如与应用程序捆绑在一起的许可证文件
因此,是的,这被认为是正确的——至少在我看来是这样 如果您的程序使用
Classloader.getResourceAsStream()
(或类似方式)加载这些其他文件,那么将这些文件包含在类路径中是非常有意义的
这是常见的,例如与应用程序捆绑在一起的许可证文件
因此,是的,这被认为是正确的——至少在我看来是这样 来自:
-cp类路径
指定目录、JAR归档和ZIP归档的列表以搜索类文件。
指定-classpath或-cp将覆盖classpath环境变量的任何设置
如果未使用-classpath和-cp并且未设置classpath,则用户类路径包括
当前目录(.)的名称
有关类路径的详细信息,请参见设置类路径
()
发件人:
既不是目录也不是存档(.zip或
.jar文件)将被忽略
进一步:
每个类路径都应该
以文件名或目录结束,具体取决于您正在设置的文件名或目录
类路径到:
- 对于包含.class文件的.jar或.zip文件,类路径以.zip或.jar文件名结尾
- 对于未命名包中的.class文件,类路径以包含.class文件的目录结尾
- 对于命名包中的.class文件,类路径以包含“root”包的目录(文件中的第一个包)结尾 完整包名)
- 对于包含.class文件的.jar或.zip文件,类路径以.zip或.jar文件名结尾
- 对于未命名包中的.class文件,类路径以包含.class文件的目录结尾
- 对于命名包中的.class文件,类路径以包含“root”包的目录(文件中的第一个包)结尾 完整包名)
也许有一点关于您面临的问题?也许有一点关于您面临的问题?但不是其他文件?是,否,为什么?因为类和资源是在目录或jar文件(或zip文件)中搜索的。因此,将普通文件添加到类路径是毫无意义的。@Jesper:Java在包含单个非jar文件时似乎可以正常工作。所以,我不确定你的意思。@Doug添加例如个人
*。类文件不起作用。如果您这样做,Java将无法在这些文件中找到类。@Jesper,配置文件如何?但其他文件如何?是,否,为什么?因为类和资源是在目录或jar文件(或zip文件)中搜索的。因此,将普通文件添加到类路径是毫无意义的。@Jesper:Java在包含单个非jar文件时似乎可以正常工作。所以,我不确定你的意思。@Doug添加例如个人*。类文件不起作用。如果您这样做,Java将无法在这些文件中找到类。@Jesper,配置文件呢?您能在Maurice Perry自己对这个问题的回答中回应他的评论吗?将普通文件添加到类路径而不是它所在的目录不是毫无意义吗?或者,如果我们只需要一个文件,这是否节省了一些时间或防止了文件名冲突?@DougTreadwell:不,我不认为这是毫无意义的。有一些JDBC驱动程序,为了加载他们的许可证文件,它们需要精确的设置。这些驱动程序如何知道他们的许可证是由一个带有完整文件名的绝对路径包含的,还是在某个路径中发现的?@DougTreadwell:我想他们是通过GetResource加载的