Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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 getSystemResourceAsStream无法找到资源_Java_File Io_Ioexception - Fatal编程技术网

Java getSystemResourceAsStream无法找到资源

Java getSystemResourceAsStream无法找到资源,java,file-io,ioexception,Java,File Io,Ioexception,我需要从文件系统中读取XML文件 读取XML的代码位于jar文件中,我无法修改该代码 ClassLoader.getSystemResourceAsStream('Config.xml'); 我尝试在类路径中设置Config.xml的位置,以及在命令行中设置路径 SET CLASSPATH=C:\opt\conf 及 但什么都没用 每次我运行代码时都会出现异常 Caused by: java.io.IOException: Could not find resource Config.xml

我需要从文件系统中读取XML文件

读取XML的代码位于jar文件中,我无法修改该代码

ClassLoader.getSystemResourceAsStream('Config.xml');
我尝试在类路径中设置Config.xml的位置,以及在命令行中设置路径

SET CLASSPATH=C:\opt\conf

但什么都没用

每次我运行代码时都会出现异常

Caused by: java.io.IOException: Could not find resource Config.xml
需要有关如何从文件系统读取此config.xml的帮助。我需要找到一种方法将文件放在某个位置或设置类路径,以便无法修改的代码可以读取config.xml


我已经在谷歌上搜索了很多,并试图实现这些解决方案,但没有任何效果。

下面是一种从罐子中读取墨水的方法:

public Object[] readJARFiles(String jarName, String suffix) throws FileNotFoundException{
jarName.replaceAll("/", "\\.");
ArrayList<Object>objects = new ArrayList<Object>();
File f;
f = new File(jarName);
f = new File(jarName);
if(f.exists()) {
    try {
    JarInputStream jarFile;
    jarFile = new JarInputStream(new FileInputStream (jarName));
    JarEntry jarEntry;
    while(true) {
        jarEntry = jarFile.getNextJarEntry();
        if(jarEntry == null) {
        break;
        }
        if(jarEntry.getName().endsWith(suffix)){
        objects.add(jarEntry);
        }
       /* Object tempObject;
        tempObject = Class.forName(jarEntry.getName().
         replaceAll("/", "\\."));
            tempObject.substring(0, jarEntry.
            getName().length() - 6));*/
    }
    }catch( Exception ex){
    System.out.println("Error! in class ReadFiles -- " + ex.toString());
    System.out.println();
    }
    Object[] returnArray = new Object[objects.size()];
    System.out.println(returnArray.length);
    for(int n = 0; objects.size() < n; ++n) {
        returnArray[n] = objects.get(n);
    }
    return returnArray;
} else {
    System.out.println("There aren't files to read");
    return null;
}
}
public对象[]readJARFiles(字符串jarName,字符串后缀)抛出FileNotFoundException{
jarName.replaceAll(“/”,“\\”);
ArrayListobjects=新的ArrayList();
文件f;
f=新文件(jarName);
f=新文件(jarName);
如果(f.exists()){
试一试{
JarInputStream jarFile;
jarFile=newjarinputstream(newfileinputstream(jarName));
JarEntry-JarEntry;
while(true){
jarEntry=jarFile.getNextJarEntry();
if(jarEntry==null){
打破
}
if(jarEntry.getName().endsWith(后缀)){
添加(jarEntry);
}
/*对象tempObject;
tempObject=Class.forName(jarEntry.getName()。
替换全部(“/”、“\\.”);
tempObject.substring(0,jarEntry)。
getName().length()-6))*/
}
}捕获(例外情况除外){
System.out.println(“错误!类中的ReadFiles--”+ex.toString());
System.out.println();
}
Object[]returnArray=新对象[objects.size()];
System.out.println(returnArray.length);
对于(int n=0;objects.size()
我可以用一种不同的方法来实现这一点

在执行jar的shell脚本中,我添加了一个命令来更新jar文件,以便在执行jar之前包含config.xml

jar uf encrypt.jar Config.xml

java -jar encrypt.jar P password
如果不存在,这会将
Config.xml
添加到jar中,如果存在,则会更新。
然后,当我执行jar时,
Config.xml
将在jar中可用。

我需要从一个位置读取xml,这意味着我必须将文件放在某个位置,以便现有逻辑可以找到该文件。
CLASSPATH
env变量不一定是真的。如何启动应用程序?我正在执行一个shell脚本
java-jar encrypt.jar p password
jar uf encrypt.jar Config.xml

java -jar encrypt.jar P password