mvn exec:java未传递java.library.path问题求助
Maven exec:java无法传递java.library.path参数的解决方法
在Windows 11系统的批处理文件中执行以下命令时:
mvn exec:java -Dexec.mainClass=com.fiscalassets.tax.PrintForm1098s -Dexec.args="application.properties.FiscalAssets" -Djava.library.path="C:\OneDrive\Dev\Jacob"
出现错误提示找不到jacob-1.20-x64,且指定的路径未被加入到java.library.path中,可尝试以下解决方法:
改用exec:exec命令直接控制JVM参数
exec:exec插件能更精准地传递JVM参数,命令格式如下:mvn exec:exec -Dexec.executable="java" -Dexec.args="-Djava.library.path=C:\OneDrive\Dev\Jacob -cp %classpath com.fiscalassets.tax.PrintForm1098s application.properties.FiscalAssets"注:Windows批处理中的
%classpath会被Maven自动替换为项目的完整类路径。在pom.xml中配置exec插件的JVM参数
在项目的pom.xml里预先配置exec插件的jvmArguments,避免命令行参数传递问题:<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <configuration> <mainClass>com.fiscalassets.tax.PrintForm1098s</mainClass> <arguments> <argument>application.properties.FiscalAssets</argument> </arguments> <jvmArguments> <jvmArgument>-Djava.library.path=C:\OneDrive\Dev\Jacob</jvmArgument> </jvmArguments> </configuration> </plugin> </plugins> </build>配置完成后,批处理中的命令可简化为:
mvn exec:java处理路径空格问题
路径中包含空格(如OneDrive目录)可能导致参数解析异常,可尝试:- 确保路径被正确包裹在引号中
- 使用Windows短路径格式(例如将
C:\OneDrive\Dev\Jacob替换为C:\OneDr~1\Dev\Jacob)
临时将库路径加入系统PATH
把jacob库所在目录临时加到系统PATH环境变量中,JVM会自动从PATH加载本地库:set PATH=C:\OneDrive\Dev\Jacob;%PATH% mvn exec:java -Dexec.mainClass=com.fiscalassets.tax.PrintForm1098s -Dexec.args="application.properties.FiscalAssets"
内容的提问来源于stack exchange,提问作者Neil
相关产品推荐
相关产品推荐

