Java 转换为可运行Jar文件时读取.ini文件

Java 转换为可运行Jar文件时读取.ini文件,java,bufferedreader,filereader,ini,ini4j,Java,Bufferedreader,Filereader,Ini,Ini4j,我有一个项目,我将把它转换成可运行的jar文件。我正在使用ini4j将一些配置存储在ini文件中 当我简单地设置目录getConf=newini(newfilereader(path)),它就会工作,但当我使用getResourceAsStream() 当我试图读取我的INI文件时,我得到了下面的错误 Exception in thread "main" java.lang.NullPointerException at java.io.Reader.<init>(Reade

我有一个项目,我将把它转换成可运行的jar文件。我正在使用
ini4j
将一些配置存储在ini文件中

当我简单地设置目录
getConf=newini(newfilereader(path)),它就会工作
,但当我使用
getResourceAsStream()

当我试图读取我的INI文件时,我得到了下面的错误

Exception in thread "main" java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:113)
    at org.ini4j.Ini.load(Ini.java:104)
    at org.ini4j.Ini.<init>(Ini.java:56)
    at com.test.ttf.IniReader.readIni(IniReader.java:28)
    at com.test.ttf.SlashSCR.InitProg(SlashSCR.java:116)
    at com.test.ttf.InitProg.main(InitProg.java:18)

当您想从jar加载配置时,可以使用路径
getResource()
getResourceAsStream()
函数。
NullPointerException
表示(很可能是因为在一行上有许多语句很难判断)未找到资源(它会以静默方式返回
null


如果您想从本地文件加载它,那么只需使用原始方法(使用
文件读取器
)即可。但是,您必须设置相对于执行目录的路径(从中运行
java
)。这很可能是与您的jar相同的目录。在这种情况下,您应该使用
“conf.ini”
而不是
“./conf.ini”

谢谢!我要制作这个文件的.exe和.app版本,我应该把我的.ini文件放在资源目录中,并在exe和app文件旁边生成快捷方式,还是应该直接让用户通过同一目录中的原始文件访问ini文件?这没关系,只要它们与运行位置相比位于同一相对位置。使用快捷方式时,设置运行目录是快捷方式的一个属性(因此这可能会使它变得更复杂)。
Exception in thread "main" java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:113)
    at org.ini4j.Ini.load(Ini.java:104)
    at org.ini4j.Ini.<init>(Ini.java:56)
    at com.test.ttf.IniReader.readIni(IniReader.java:28)
    at com.test.ttf.SlashSCR.InitProg(SlashSCR.java:116)
    at com.test.ttf.InitProg.main(InitProg.java:18)
    Ini getConf= new Ini();
    getConf.load(Thread.currentThread().getContextClassLoader().getClass().getResourceAsStream("../conf.ini"));