可运行 jar 中的 FileNotFoundException
FileNotFoundException in runnable jar
我有一个在 eclipse 启动器中运行良好但在可执行 jar 中运行不正常的应用程序,我已将 src 和 .properties 复制到 jar 中,但出现此错误:
Error in ConfigXML.java: problems with src/main/resources/config.xml
java.io.FileNotFoundException: C:\Users\victo\Desktop\IS1\config.xml (The system can not find the path specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
at configuration.ConfigXML.<init>(ConfigXML.java:84)
at configuration.ConfigXML.<clinit>(ConfigXML.java:76)
at gui.ApplicationLauncher.main(ApplicationLauncher.java:20)
null
Exception in thread "main" java.lang.NullPointerException
at java.util.Locale.<init>(Unknown Source)
at java.util.Locale.<init>(Unknown Source)
at gui.ApplicationLauncher.main(ApplicationLauncher.java:24)
这些是 ApplicationLauncher.java 的行:
public class ApplicationLauncher
{
public static void main(String[] args)
{
ConfigXML c=ConfigXML.getInstance();
System.out.println(c.getLocale());
Locale.setDefault(new Locale(c.getLocale()));
System.out.println("Locale: "+Locale.getDefault());
和 ConfigXML:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<businessLogic local="true">
<businessLogicNode>0.0.0.0</businessLogicNode>
<businessLogicPort>1099</businessLogicPort>
<businessLogicName>Bets</businessLogicName>
</businessLogic>
<database local="true">
<databaseNode>0.0.0.0</databaseNode>
<dbFilename>src/main/resources/bets.temp</dbFilename>
<dataBaseOpenMode>open</dataBaseOpenMode>
<databasePort>6136</databasePort>
<user>admin</user>
<password>admin</password>
</database>
<locale>en</locale>
</config>
config.xml 在 jar 的资源文件夹中,所以我不知道这是怎么回事,谢谢。
解决办法是把src文件夹粘贴到jar文件旁边,我也是用WinRar把它粘贴到jar文件里面的。这是因为在配置xml中有一行指向src/resources作为所需资源的路径
我有一个在 eclipse 启动器中运行良好但在可执行 jar 中运行不正常的应用程序,我已将 src 和 .properties 复制到 jar 中,但出现此错误:
Error in ConfigXML.java: problems with src/main/resources/config.xml
java.io.FileNotFoundException: C:\Users\victo\Desktop\IS1\config.xml (The system can not find the path specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
at configuration.ConfigXML.<init>(ConfigXML.java:84)
at configuration.ConfigXML.<clinit>(ConfigXML.java:76)
at gui.ApplicationLauncher.main(ApplicationLauncher.java:20)
null
Exception in thread "main" java.lang.NullPointerException
at java.util.Locale.<init>(Unknown Source)
at java.util.Locale.<init>(Unknown Source)
at gui.ApplicationLauncher.main(ApplicationLauncher.java:24)
这些是 ApplicationLauncher.java 的行:
public class ApplicationLauncher
{
public static void main(String[] args)
{
ConfigXML c=ConfigXML.getInstance();
System.out.println(c.getLocale());
Locale.setDefault(new Locale(c.getLocale()));
System.out.println("Locale: "+Locale.getDefault());
和 ConfigXML:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<businessLogic local="true">
<businessLogicNode>0.0.0.0</businessLogicNode>
<businessLogicPort>1099</businessLogicPort>
<businessLogicName>Bets</businessLogicName>
</businessLogic>
<database local="true">
<databaseNode>0.0.0.0</databaseNode>
<dbFilename>src/main/resources/bets.temp</dbFilename>
<dataBaseOpenMode>open</dataBaseOpenMode>
<databasePort>6136</databasePort>
<user>admin</user>
<password>admin</password>
</database>
<locale>en</locale>
</config>
config.xml 在 jar 的资源文件夹中,所以我不知道这是怎么回事,谢谢。
解决办法是把src文件夹粘贴到jar文件旁边,我也是用WinRar把它粘贴到jar文件里面的。这是因为在配置xml中有一行指向src/resources作为所需资源的路径