繁体   English   中英

带有属性文件的java类路径问题

[英]java class path issue with properties file

在调用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);

如果有人能帮我找到,为什么会这样,那将是非常好的。 先感谢您。

调用getResourceAsStream()会使java查找可用于当前类加载器的资源,即可以在类路径中找到的资源。 如果要从文件系统中读取文件,请使用new新FileInputStream(“abc.properties”)。 如果要继续从资源中读取文件,则必须将其包含在类路径中,放入一个jar文件中或作为单独的条目。

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

BTW看看内置此功能的jackarata配置包。

您需要在CLASSPATH中包含“./”。 您实际上是在告诉JVM将其排除。

这是因为从当前目录检查了类路径. 会做得最好
即使您没有在资源文件夹中包含属性文件并运行java程序,如下所述,它也可以完美地工作

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

注意 :cp是classpath的简写

包括完整的类路径

java -classpath。;%CLASSPATH%com.xyz.main

您还可以设置多个规范请参阅以下链接, http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/classpath.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM