Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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 Eclipse-另一个项目中的引用文件_Java_Eclipse_File_Relative Path - Fatal编程技术网

Java Eclipse-另一个项目中的引用文件

Java Eclipse-另一个项目中的引用文件,java,eclipse,file,relative-path,Java,Eclipse,File,Relative Path,编辑:文章底部的我的解决方案 我有两个项目在eclipse中共享相同的XML/XSD数据。我尝试了许多不同的方法将数据分解成一个单独的项目,并通过各种方法引用,但运气不太好。我的目标是,我可以为每个项目分别单击RuninEclipse,它们都从相同的数据加载 最终构建项目时,将有3个JAR(两个项目+1个库),它们将与xml和xsd文件夹位于同一目录中。因此,对XSD/XMLs的任何文件引用当前的格式如下: File file = new File("xml/pixtilemaps.xml");

编辑:文章底部的我的解决方案

我有两个项目在eclipse中共享相同的XML/XSD数据。我尝试了许多不同的方法将数据分解成一个单独的项目,并通过各种方法引用,但运气不太好。我的目标是,我可以为每个项目分别单击RuninEclipse,它们都从相同的数据加载

最终构建项目时,将有3个JAR(两个项目+1个库),它们将与xml和xsd文件夹位于同一目录中。因此,对XSD/XMLs的任何文件引用当前的格式如下:

File file = new File("xml/pixtilemaps.xml");
这在eclipse中不起作用,但在导出过程中起作用,因为文件结构是合理的。我试着在每个项目中使用虚拟文件夹,但看起来运行时对相关文件的引用不像我期望的那样使用虚拟文件夹。我尝试将每个文件夹添加为链接资源,在构建路径上添加项目,等等,但无论我做什么,它似乎都没有将xml文件夹视为相对文件夹。我得到一个错误,如:file:/F:/workspace/com.myoid.editor/xsd/pixtilemaps.xsd不存在。因为它是相对于项目的。我也试图找到一个运行配置解决方案,但显然有一些我不理解的事情,让它以我想要的方式工作

总之,在第三个eclipse项目中有一个xsd文件夹,xml文件夹,我希望1和2能够通过相对文件路径访问它,如

File file = new File("xml/pixtilemaps.xml");
我是如何修复的:


好的。。所以也许有更好的解决办法,但这就是我想到的。。。在Eclipse下运行配置中,您可以指定启动将从中运行的工作目录。因此,我将这两个项目的所有xml/xsd放在同一个“工作目录”中。在每个项目的运行配置中,我将工作目录指向第三个项目,viola的工作方式与我预期的一样。

将第三个项目添加到前两个项目的构建路径中,作为
项目参考

在前两个项目中使用替代
文件
,如下所示:

    this.getClass().getClassLoader().getResourceAsStream("/xml/pixtilemaps.xml");

您是否尝试通过项目菜单->属性->java构建路径->添加项目来引用项目1和2中的项目3?

是的,但对文件对象的引用在项目1/2中使用file file=new file(“xml/pixtilemaps.xml”);但此文件存在于项目3中。以这种方式添加项目时,仍然无法查看文件。您可以尝试以编程方式访问工作区,就像在该线程中那样:这会将eclipse依赖项注入到我的代码中,这不是我想要的,因为项目导出时依赖项尽可能少。这几乎可以工作,但问题是,当我以这种方式加载主XSD时,XSD引用了它找不到的其他XSD。如果我能找到一种方法让eclipse将虚拟文件夹/链接资源引用作为项目的一部分,那么我认为它会起作用。。