Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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_Maven - Fatal编程技术网

Java 如何在另一台计算机上安装.jar依赖项?

Java 如何在另一台计算机上安装.jar依赖项?,java,maven,Java,Maven,我有一个使用Netbeans和maven构建的项目,它需要一些外部包,因此它们列在pom.xml的dependencies部分。当我构建jar时,它会下载所有依赖项,并且在我的计算机上运行良好。如果我将jar传输到另一台计算机并运行它,当遇到找不到的类(在本例中为org/apache/commons/codec/digest/DigestUtils)时,它会崩溃。我知道如何将所有依赖项打包到jar文件中,但该文件的大小是100MB,而不是40KB。分发java程序时的一般过程是什么?我是只包含所

我有一个使用Netbeans和maven构建的项目,它需要一些外部包,因此它们列在pom.xml的dependencies部分。当我构建jar时,它会下载所有依赖项,并且在我的计算机上运行良好。如果我将jar传输到另一台计算机并运行它,当遇到找不到的类(在本例中为org/apache/commons/codec/digest/DigestUtils)时,它会崩溃。我知道如何将所有依赖项打包到jar文件中,但该文件的大小是100MB,而不是40KB。分发java程序时的一般过程是什么?我是只包含所有依赖项并分发大文件,还是有办法在新计算机上自动下载所需的依赖项?我喜欢较小文件的一个原因是它必须在服务器上运行,因此,为了进行测试,如果文件大小较小,我可以更快地将新版本推送到服务器,并且它可以在系统的其他地方找到依赖项。

您可以使用appassembler插件创建一个包含应用程序及其所有依赖项的zip或tar文件,还有一个命令行shell脚本来调用Java。

您的问题有两个问题。因此,为了回答第一个问题,正如您所建议的,您可以将依赖项捆绑在一个jar中,并使用jar提取依赖项并使用java代码。为了对抗大型依赖性jar,您可以使用。这是一个很酷的工具,可以让你缩小依赖JAR,通常用于android(也可以尝试使用他们的模糊器)

“有没有办法在新计算机上自动下载所需的依赖项?”

是,使用终端(或cmd提示符)转到pom文件所在的文件夹并键入:

    mvn clean compile
这将把所有依赖项下载到.m2文件夹中。然后,您可以在另一台计算机上使用maven来运行程序或将文件夹作为参数传递给java。然而,重新格式化文件夹结构可能是一件痛苦的事情。要使用maven:

   mvn exec:java -Dexec.mainClass="<your class path>" -Dexec.args="<Args here>" 
mvn exec:java-Dexec.mainClass=“”-Dexec.args=“”

您不需要指定依赖项的位置,因为Maven会在pom.xml文件中为您处理这些依赖项

可以将Maven与
pom.xml
一起使用。只需在新计算机上签出源代码。然后站在拥有
pom.xml
文件的目录中,运行命令
mvncleanpackage
,Maven将为您下载所有必需的JAR。确保在新机器上正确设置SDK和Maven。另一方面,您的服务器的网络连接是否足够慢,以至于在上传速度上存在足够大的差异?我理解这个问题,只是根据你提供的理由有点好奇。你开发了什么样的应用程序?我家的上传速度只有5 Mbps左右,所以上传100 MB需要一段时间