Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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 如何为jar文件资源使用File.separator?_Java_Jar - Fatal编程技术网

Java 如何为jar文件资源使用File.separator?

Java 如何为jar文件资源使用File.separator?,java,jar,Java,Jar,我试图读取位于jar文件中的属性文件。我想使用File.separator,因为应用程序将在多个平台上运行。我正在构建如下路径: jarFilePath="jar:file:"+jarFile.getAbsolutePath()+"!"+jarPropertyFilePath; //jarPropertyFilePath is getting loaded from a class which is storing Constant JAR_PROPERTY_FILE_PATH. fileURL

我试图读取位于jar文件中的属性文件。我想使用File.separator,因为应用程序将在多个平台上运行。我正在构建如下路径:

jarFilePath="jar:file:"+jarFile.getAbsolutePath()+"!"+jarPropertyFilePath; //jarPropertyFilePath is getting loaded from a class which is storing Constant JAR_PROPERTY_FILE_PATH.
fileURL= new URL(jarFilePath);
jar:file:C:\MyWorkspace\FalconPatchInstaller\.\patches\DS661JDK1.8.jar!/manifest/patchControl.properties
jar:file:C:\MyWorkspace\FalconPatchInstaller\.\patches\DS661JDK1.8.jar!\manifest\patchControl.properties
但是,只有当jarPropertyFilePath(jar中属性文件的固定位置)给定为:

案例1:

public static final String JAR_PROPERTY_FILE_PATH = "/manifest/patchControl.properties";
案例2:

如果我按如下方式使用File.separator,它会给出java.net.MalformedURLException:否!/符合规格

public static final String JAR_PROPERTY_FILE_PATH = File.separator+"manifest"+File.separator+"patchControl.properties";     
在案例1(workds fine)中,调试时的最终URL如下所示:

jarFilePath="jar:file:"+jarFile.getAbsolutePath()+"!"+jarPropertyFilePath; //jarPropertyFilePath is getting loaded from a class which is storing Constant JAR_PROPERTY_FILE_PATH.
fileURL= new URL(jarFilePath);
jar:file:C:\MyWorkspace\FalconPatchInstaller\.\patches\DS661JDK1.8.jar!/manifest/patchControl.properties
jar:file:C:\MyWorkspace\FalconPatchInstaller\.\patches\DS661JDK1.8.jar!\manifest\patchControl.properties
在案例2中(不工作),调试时的最终URL如下所示:

jarFilePath="jar:file:"+jarFile.getAbsolutePath()+"!"+jarPropertyFilePath; //jarPropertyFilePath is getting loaded from a class which is storing Constant JAR_PROPERTY_FILE_PATH.
fileURL= new URL(jarFilePath);
jar:file:C:\MyWorkspace\FalconPatchInstaller\.\patches\DS661JDK1.8.jar!/manifest/patchControl.properties
jar:file:C:\MyWorkspace\FalconPatchInstaller\.\patches\DS661JDK1.8.jar!\manifest\patchControl.properties
如何使用File.separator作为JAR\u属性\u File\u路径

我试图读取位于jar文件中的属性文件。我想使用File.separator,因为应用程序将在多个平台上运行

不,您根本不想使用
File.separator
。JAR文件中定义的路径分隔符是
/
。它不依赖于平台


注意:您可以在文件名中使用
/
,也可以在Java的所有平台上使用。但这不是文件名,而是资源名,它命名的东西不是文件,而是资源。

是您试图在解析文件的应用程序的类路径中读取的jar文件吗?如果jar文件在类路径中,那么您采取了错误的方法。看,不,它不在类路径上。它位于jarFile.getAbsolutePath()指定的单独位置。我想如果它在类路径上,我会使用getResourceStream方法。你不需要File.separator(包括Windows)。你的答案可能是。否则,发布一些代码并遵循@javajon您的第一个链接是关于文件系统中的文件,而不是JAR文件中的资源。你是对的,但理由不对。回答得好!我们应该始终理解文件路径和资源之间的区别。。。