Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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文件_Java_Eclipse_Maven_Jar - Fatal编程技术网

如何直接使用Java主资源文件夹中的JAR文件

如何直接使用Java主资源文件夹中的JAR文件,java,eclipse,maven,jar,Java,Eclipse,Maven,Jar,这可能是一个有点不寻常的问题,但我有一个独特的情况,像这样的东西对我来说是一个很好的解决方案 我在src/main/resources中有一个jar文件(称为engine.jar)。如何从主JAVA类直接使用这个jar?(在构建路径中添加此选项?)但是 我的Maven Dependencies库中有另一个JAR文件(名称完全相同,即engine.JAR),它的代码稍有不同。我想稍后在我的主类中使用这个jar Maven资源文件夹的内容被复制到目标/类,并从那里复制到结果Jar文件的根目录。这是预

这可能是一个有点不寻常的问题,但我有一个独特的情况,像这样的东西对我来说是一个很好的解决方案

我在src/main/resources中有一个jar文件(称为engine.jar)。如何从主JAVA类直接使用这个jar?(在构建路径中添加此选项?)但是


我的Maven Dependencies库中有另一个JAR文件(名称完全相同,即engine.JAR),它的代码稍有不同。我想稍后在我的主类中使用这个jar

Maven资源文件夹的内容被复制到目标/类,并从那里复制到结果Jar文件的根目录。这是预期的行为

我不明白的是你的情况有什么问题。通过
getClass().getResource(“/filename.txt”)
引用资源从类路径的根开始,无论该路径(或其元素)是
target/classes
还是JAR的根。我看到的唯一可能的错误是您使用了错误的
类加载器

确保使用资源的类与资源位于同一工件(JAR)中,并执行
ThatClass.class.getResource(“/path/with/slash”)或ThatClass.class.getClassLoader().getResource(“path/without/slash”)。


但除此之外:如果它不起作用,您可能在构建过程中的某个地方做错了什么。您能验证资源是否在JAR中吗?

Maven资源文件夹的内容被复制到target/classes,并从那里复制到结果JAR文件的根目录。这是预期的行为

我不明白的是你的情况有什么问题。通过
getClass().getResource(“/filename.txt”)
引用资源从类路径的根开始,无论该路径(或其元素)是
target/classes
还是JAR的根。我看到的唯一可能的错误是您使用了错误的
类加载器

确保使用资源的类与资源位于同一工件(JAR)中,并执行
ThatClass.class.getResource(“/path/with/slash”)或ThatClass.class.getClassLoader().getResource(“path/without/slash”)。


但除此之外:如果它不起作用,您可能在构建过程中的某个地方做错了什么。您能验证资源是否在JAR中吗?

我还没有编写使用JAR中的类和方法的顶级类。但我不确定我是否理解你的解决方案。jar文件位于src/main/resources的根目录下。您是说我可以使用.getResource并直接指向jar文件中的完全限定类吗?”com/company/engine/PrintEngine.java“我的导入语句看起来如何?导入com.company.engine.PrintEngine。我还没有编写使用jar中的类和方法的顶级类。但我不确定我是否理解你的解决方案。jar文件位于src/main/resources的根目录下。您是说我可以使用.getResource并直接指向jar文件中的完全限定类吗?”com/company/engine/PrintEngine.java“我的导入语句看起来如何?导入com.company.engine.PrintEngine。您不应该将jar文件放入
src/main/resources
或maven项目中的任何子文件夹。它应该放在您的存储库管理器中,而不是像任何其他依赖项一样简单地将其作为依赖项使用。@khmarbaise是的,这是真的,但正如我提到的,我有一个独特的情况。这就是我问题的基础,什么是独一无二的?你能解释一下你为什么会有这种情况吗?你的设置听起来不对…是为了测试还是什么?是的,是为了测试我想运行的新旧引擎,为了确保向后兼容性,如果您有一个测试,那么jar文件应该放在
src/test/resources
中,而您有集成测试,这意味着通常在maven中有一个单独的模块,其中包含适当的依赖项,因此不需要在resources文件夹中放置jar文件……您不应该将jar文件放在
src/main/resources
或maven项目中的任何子文件夹。它应该放在您的存储库管理器中,而不是像任何其他依赖项一样简单地将其作为依赖项使用。@khmarbaise是的,这是真的,但正如我提到的,我有一个独特的情况。这就是我问题的基础,什么是独一无二的?你能解释一下你为什么会有这种情况吗?你的设置听起来不对…是为了测试还是什么?是的,是为了测试我想运行的新旧引擎,为了确保向后兼容性,如果您有一个测试,那么jar文件应该放在
src/test/resources
中,而您有集成测试,这意味着通常在maven中有一个单独的模块,其中包含适当的依赖项,因此不需要在resources文件夹中使用jar文件。。。