Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当加载器util是不同的Jar时,如何在Jar中加载属性文件_Java_Properties - Fatal编程技术网

Java 当加载器util是不同的Jar时,如何在Jar中加载属性文件

Java 当加载器util是不同的Jar时,如何在Jar中加载属性文件,java,properties,Java,Properties,我正在使用在我的项目(MyProject.jar)中打包为jar(PropLoader.jar)的属性加载器实用程序。我的属性文件位于MyProject.jar ie.com.My.project.resources.MyPropertyFile.properties中的另一个包中,我正在调用PropLoader util(主类:PropLoader),它在输入中需要一个propfile名称,如下所示: PropLoader.loadProperties("/com/my/project/res

我正在使用在我的项目(MyProject.jar)中打包为jar(PropLoader.jar)的属性加载器实用程序。我的属性文件位于MyProject.jar ie.com.My.project.resources.MyPropertyFile.properties中的另一个包中,我正在调用PropLoader util(主类:PropLoader),它在输入中需要一个propfile名称,如下所示:

PropLoader.loadProperties("/com/my/project/resources/MyPropertyFile.properties")
上面代码所在的类文件:com.my.project.resources.MyLogic

在内部,实用程序jar使用getResourcesAsStream

但这会导致空指针异常:

SEVERE: java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:418)
    at java.util.Properties.load0(Properties.java:337)
    at java.util.Properties.load(Properties.java:325)

文件
MyPropertyFile.properties
是否作为资源与.jar捆绑在一起?如果没有,这就是您的原因:加载程序无法找到文件,因为它正在.jar中查找资源。

文件
MyPropertyFile.properties
是否与.jar捆绑为资源?如果没有,那就是您的原因:加载程序无法找到文件,因为它正在.jar中查找资源。

如果部署在不同的服务器上,甚至部署在不同的Netbeans工作区中,它似乎工作得非常好

我的拙劣工作区的解决方法是将属性文件放在PropLoader.jar中


我还发现我自己的工作区的问题是一个混乱的类路径。一旦我修复了它以反映我的项目文件夹,一切都很好。

如果部署在不同的服务器上,甚至部署在不同的Netbeans工作区中,它似乎工作得非常好

我的拙劣工作区的解决方法是将属性文件放在PropLoader.jar中


我还发现我自己的工作区的问题是一个混乱的类路径。一旦我修复了它以反映我的项目文件夹,一切都很顺利。

是的。如果将代码放在com.my.project.resources.MyLogic类中,则可以加载属性文件。但是如果我将属性文件名发送到PropLoader.loadProperties(),则它将无法再定位该文件。
PropLoader
可能是由与您自己的类不同的类加载器加载的。在这种情况下,将根据PropLoader的类加载器的上下文查找资源。PropLoader上是否还有其他方法可供使用(例如,传递从类打开的资源流)?更多关于你是对的。PropLoader在内部使用此.getClass().getResourceAsStream(propertyFileName)。我无法更改此实现,因为这是一个遗留jar。有什么方法可以解决这个问题吗?如果PropLoader有一种方法,您可以将流或文件内容作为字符串传递,您可以使用它。除此之外,您还必须弄清楚如何加载该类ig,并以某种方式使其通过与您相同的类加载器ar加载。我发现另一件事,如果我在简单java程序中使用PropLoader,那么当我在企业应用程序中使用它并将其部署到我的glassfish服务器上时,我没有问题,那就是它停止工作的时候。你能给我一些关于如何解决这个问题的提示吗?是的。如果将代码放在com.my.project.resources.MyLogic类中,则可以加载属性文件。但是如果我将属性文件名发送到PropLoader.loadProperties(),则它将无法再定位该文件。
PropLoader
可能是由与您自己的类不同的类加载器加载的。在这种情况下,将根据PropLoader的类加载器的上下文查找资源。PropLoader上是否还有其他方法可供使用(例如,传递从类打开的资源流)?更多关于你是对的。PropLoader在内部使用此.getClass().getResourceAsStream(propertyFileName)。我无法更改此实现,因为这是一个遗留jar。有什么方法可以解决这个问题吗?如果PropLoader有一种方法,您可以将流或文件内容作为字符串传递,您可以使用它。除此之外,您还必须弄清楚如何加载该类ig,并以某种方式使其通过与您相同的类加载器ar加载。我发现另一件事,如果我在简单java程序中使用PropLoader,那么当我在企业应用程序中使用它并将其部署到我的glassfish服务器上时,我没有问题,那就是它停止工作的时候。你能给我一些关于如何解决这个问题的提示吗?