JUnit测试正常,但maven测试失败,因为在macOS上找不到库(DYLD_library_PATH)
我有一个简单的JUnit测试,我在macOS Mojave上的Eclipse中成功地运行了它。该类对动态库进行JNA调用,因此我必须设置运行时环境变量JUnit测试正常,但maven测试失败,因为在macOS上找不到库(DYLD_library_PATH),macos,maven,junit,lotus-notes,hcl-notes,Macos,Maven,Junit,Lotus Notes,Hcl Notes,我有一个简单的JUnit测试,我在macOS Mojave上的Eclipse中成功地运行了它。该类对动态库进行JNA调用,因此我必须设置运行时环境变量DYLD\u library\u PATH 当我尝试在Eclipse内部或外部运行mvn测试时,它们都失败了 据我所知,原因是macOS'。但是,必须能够以某种方式设置它们,因为Eclipse中的JUnit测试按设计工作 我试图“破解”最末端执行的mvnshell脚本: exec“$JAVACMD”\ $MAVEN_选项\ $MAVEN_DEBUG
DYLD\u library\u PATH
当我尝试在Eclipse内部或外部运行mvn测试时,它们都失败了
据我所知,原因是macOS'。但是,必须能够以某种方式设置它们,因为Eclipse中的JUnit测试按设计工作
我试图“破解”最末端执行的mvn
shell脚本:
exec“$JAVACMD”\
$MAVEN_选项\
$MAVEN_DEBUG_选项\
-类路径“${CLASSWORLDS\u JAR}”\
“-Dclassworlds.conf=${MAVEN_HOME}/bin/m2.conf”\
“-Dmaven.home=${MAVEN_home}”\
“-dllibrary.jansi.path=${MAVEN_HOME}/lib/jansi native”\
“-Dmaven.multimulticuleprojectdirectory=${MAVEN_PROJECTBASEDIR}”\
${CLASSWORLDS_LAUNCHER}“$@”
通过在exec
命令之前设置DYLD\u LIBRARY\u路径
,但未成功。
还尝试修补$JAVACMD
以首先设置变量,但没有成功
我错过了哪些选项(除了禁用SIP)
我不是在寻找通用解决方案,运行mvn
是我的目标
类似问题:
我找到了一个解决方案,我不喜欢它,但它似乎有效。JNA调用用于加载使用
@executable\u路径
注释的其他代码。运行Java时,可执行文件是JVM,而不是原始应用程序,因此JNA调用将失败
链接整个程序目录(并在此后进行清理)对我起到了作用。我对mvn的调用如下所示:
#/bin/bash
#丑陋的黑客让mvn打球
JAVA_HOME=/Library/JAVA/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/HOME
对于onelib,单位为美元(ls/Applications/HCL\Notes.app/Contents/MacOS)
做
echo“Linking/Applications/HCL\Notes.app/Contents/MacOS/${onelib}”
sudo ln-s/Applications/HCL\Notes.app/Contents/MacOS/${onelib}${JAVA_HOME}/jre/bin/${onelib}
完成
#马文试验
运行测试
#清理
sudo find$JAVA_HOME/jre/bin-maxdepth 1-type l-delete
YMMV