我正在更新系统以满足客户的其他要求。它是一个在java 1.4.2上运行的旧系统,使用maven和jdk 1.5.0_11编译。
系统的一部分是加载属性文件。使用的语法是:
String fileName = "MyClass".class.getClassLoader().getResource("MyFile.txt").getFile();
SAXBuilder builder = new SAXBuilder();
Document document = builder.build(fileName);
我没有更改该代码的任何内容。但是,当我在Linux中部署jar文件时,它会创建一个不正确的文件路径。目前,MyFile.txt与编译的jar位于同一文件夹内,Old JAR上面的代码获取正确的文件路径。但是,使用新编译的jar文件,生成的MyFile.txt文件路径包含文件路径中Jar的名称。请参阅下面的更多解释。
假设已编译的Jar是CompiledJarv01.jar并且部署在/ Apps / myJar文件夹中(MyFile.txt也在里面),MyFile.txt的完整文件路径是
旧JAR文件:/Apps / myJar / MyFile.txt
新JAR文件:/Apps / myJar /CompiledJarv01.jar!/ MyFile.txt
我不确定为什么Jar文件名包含在MyFile.txt文件路径中。这在运行应用程序时会导致FileNotFoundException。