Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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 在Intellij IDEA中创建可运行且最小的jar(自动选择主类所需的必要的第三方jar)_Java_Intellij Idea_Dependencies_Proguard_Executable Jar - Fatal编程技术网

Java 在Intellij IDEA中创建可运行且最小的jar(自动选择主类所需的必要的第三方jar)

Java 在Intellij IDEA中创建可运行且最小的jar(自动选择主类所需的必要的第三方jar),java,intellij-idea,dependencies,proguard,executable-jar,Java,Intellij Idea,Dependencies,Proguard,Executable Jar,我在IntelliJ IDEA中有两个模块,一个是我所有java项目使用的公共类,另一个是项目的唯一类 通常,唯一项目模块只使用commonclass模块中的几个类。如果我在项目模块中创建一个可运行的jar,它将包括commonclass模块中使用的所有第三方jar,尽管这些jar实际上是由主类使用的 ps:如中所示,commonclass中的类使用大多数依赖项,而主类所在的WordFreqSort模块不使用这些依赖项。我可以手动移除无用的罐子 是否有一种基于主类自动包含第三方JAR的方法?不要

我在IntelliJ IDEA中有两个模块,一个是我所有java项目使用的公共类,另一个是项目的唯一类

通常,唯一项目模块只使用commonclass模块中的几个类。如果我在项目模块中创建一个可运行的jar,它将包括commonclass模块中使用的所有第三方jar,尽管这些jar实际上是由主类使用的

ps:如中所示,commonclass中的类使用大多数依赖项,而主类所在的WordFreqSort模块不使用这些依赖项。我可以手动移除无用的罐子


是否有一种基于主类自动包含第三方JAR的方法?

不要直接在IDE中这样做-而是使用maven。尝试使用maven,但会遇到以下问题:使用commonclass模块/项目作为第二个项目的systemPath信息的依赖项。但是,每次在打包第二个项目之前,我都必须重新打包commonclass模块以生成最新的commonclass.jar文件。此外,第二个项目打包失败是因为使用了comonclass的class segment.class而没有使用stanford.jar,这个第三方jar只包含在commonclass的pom.xml中,而不包含在第二个项目的pom.xml中。您能给我一些帮助吗?有了maven,您可以使用“依赖排除”来解决拉入未使用的LIB的问题。当包含公共库时,斯坦福库应作为可传递依赖项包含。永远不要使用“系统”依赖项。依赖于某个普通回购协议中提供的标准库的版本——如果不可用,则会出现更大的问题。