可运行 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作为所需资源的路径