Java .jar文件(使用蜡染依赖项)仅在特定文件夹中工作
我一直在做一个小项目,我想把.jar放在repo()的根目录中。目前,我只能在.jar位于out/artifacts/文件夹中时让它运行(我链接的GitHub repo上没有显示该文件夹,因为那里当前没有任何内容)。当我把它放在那里时,周围必要的文件夹就不在那里了,除非我把它们移到那里,而且我真的不想在我的repo中复制这些文件。我不明白为什么会这样。当我通过main方法(位于src/main.java中)运行Intellij时,它工作得很好。我也不想担心我的.jar和.java文件没有引用具有相同路径的相同文件,因此将.jar放在根目录中对我来说非常重要Java .jar文件(使用蜡染依赖项)仅在特定文件夹中工作,java,intellij-idea,jar,dependencies,batik,Java,Intellij Idea,Jar,Dependencies,Batik,我一直在做一个小项目,我想把.jar放在repo()的根目录中。目前,我只能在.jar位于out/artifacts/文件夹中时让它运行(我链接的GitHub repo上没有显示该文件夹,因为那里当前没有任何内容)。当我把它放在那里时,周围必要的文件夹就不在那里了,除非我把它们移到那里,而且我真的不想在我的repo中复制这些文件。我不明白为什么会这样。当我通过main方法(位于src/main.java中)运行Intellij时,它工作得很好。我也不想担心我的.jar和.java文件没有引用具有
如果有人能向我解释一下我在依赖项和使.jar正常工作方面做错了什么,那就太好了。jar工件配置不正确。您正在将其他依赖项jar直接打包到Java不支持的主jar中。其他jar要么需要在主jar中解包(提取),要么通过
Manifest.MF
文件链接到主jar。您的清单似乎指定了相对于主jar文件位置的正确类路径,因此,当您在该目录中运行它时,它可以工作,因为它能够从磁盘加载链接的jar。当您将主jar移动到其他目录,但不将链接的依赖项与其一起移动时,它将不会运行
请参阅,以了解其工作原理的解释以及可以进行实验的示例项目
另请参见以下答案,以了解潜在问题:
Manifest.MF
文件链接到主jar。您的清单似乎指定了相对于主jar文件位置的正确类路径,因此,当您在该目录中运行它时,它可以工作,因为它能够从磁盘加载链接的jar。当您将主jar移动到其他目录,但不将链接的依赖项与其一起移动时,它将不会运行
请参阅,以了解其工作原理的解释以及可以进行实验的示例项目
另请参见以下答案,以了解潜在问题: