属性文件的java类路径问题

属性文件的java类路径问题,java,batch-file,classpath,Java,Batch File,Classpath,在调用java main方法之前,我有一个批处理文件来设置类路径,请参见下面的代码 SET CLASSPATH=%CLASSPATH%;libs/xyz1.jar SET CLASSPATH=%CLASSPATH%;libs/xyz2.jar SET CLASSPATH=%CLASSPATH%;libs/xyz3.jar SET CLASSPATH=%CLASSPATH%;libs/xyz4.jar SET CLASSPATH=%CLASSPATH%;libs/xyz5.jar SET CLAS

在调用java main方法之前,我有一个批处理文件来设置类路径,请参见下面的代码

SET CLASSPATH=%CLASSPATH%;libs/xyz1.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz2.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz3.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz4.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz5.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz6.jar
SET CLASSPATH=%CLASSPATH%;/resource

java -classpath %CLASSPATH% com.xyz.main
如果我把我的属性文件放在资源文件夹中,它可以正常工作,但是如果我把它放在根文件夹中,它就不工作了

SET CLASSPATH=%CLASSPATH%;libs/xyz1.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz2.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz3.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz4.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz5.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz6.jar

java -classpath %CLASSPATH% com.xyz.main
上面的类路径设置不起作用,我收到空指针异常

SET CLASSPATH=%CLASSPATH%;libs/xyz1.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz2.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz3.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz4.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz5.jar
SET CLASSPATH=%CLASSPATH%;libs/xyz6.jar
SET CLASSPATH=%CLASSPATH%;/

java -classpath %CLASSPATH% com.xyz.main
上面的类路径设置不起作用,因为我得到了相同的空指针异常

我使用java util属性,如下所示

  InputStream inputStream = this.getClass().getResourceAsStream("/abc.properties");
  getProperties().load(inputStream);

如果有人能帮我找到,为什么会这样,那就太好了。提前感谢您。

您需要在类路径中包含“/”。实际上,您是在告诉JVM将其排除。

调用
getResourceAsStream()
使java查找可用于当前类加载器的资源,即可以在类路径中找到的资源。如果要从文件系统读取文件,请使用
new
newfileinputstream(“abc.properties”)`代替。若你们想继续从资源中读取文件,你们必须将它包含在你们的类路径中,或者包含在你们的一个jar文件中,或者作为一个单独的条目

您甚至可以实现从类路径读取文件的逻辑,然后用文件系统中找到的文件覆盖这些值


顺便说一句,看看内置此功能的软件包

这是因为类路径是从当前目录检查的
会做得最好
即使您没有将属性文件包含在资源文件夹中并运行下面提到的java程序,它也会工作得很好

java -cp .;%CLASSPATH% com.xyz.main

注意:cp是类路径的缩写

包含完整的类路径

java-classpath;%类路径%com.xyz.main

您还可以设置多个规格,请参阅以下链接,