在我的java程序中,我试图使用很少的本机库。如果我使用 intelij IDE 来运行代码,一切正常,但是如果我从命令行(从终端)运行代码,它会给我库链接错误
我正在使用 Mac OS Sierra 和 Java 1.8
以下是我的pom.xml看起来像。
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<mainClass>${start-class}</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit4</artifactId>
<version>2.21.0</version>
</dependency>
</dependencies>
<configuration>
<forkMode>once</forkMode>
<argLine>-Djava.library.path=/Applications/CPLEX_Studio_Community128/opl/bin/x86-64_osx/</argLine>
<environmentVariables>
<DYLD_LIBRARY_PATH>/Applications/CPLEX_Studio_Community128/opl/bin/x86-64_osx/</DYLD_LIBRARY_PATH>
</environmentVariables>
</configuration>
</plugin>
</plugins>
</build>
Java代码
@Test
public void testCPLX(){
System.out.println("DYLD_LIBRARY_PATH env: " +System.getenv("DYLD_LIBRARY_PATH"));
IloOplFactory oplF = new IloOplFactory();
}
如果我在InteliJ IDE中运行此代码,则会运行并将DYLD_LIBRARY_PATH
的值打印为/Applications/CPLEX_Studio_Community128/opl/bin/x86-64_osx/
但是如果使用以下命令运行程序。
mvn clean test -Dtest = test.java.cplexTests.TestCplex
我为null
获取DYLD_LIBRARY_PATH
,因此下一步中的库链接错误。
我在运行mvn
命令之前尝试设置DYLD_LIBRARY_PATH路径,但它没有帮助。我尝试将DYLD_LIBRARY_PATH
设置为mvn
命令的一部分,但它也没有帮助。
首先尝试
export DYLD_LIBRARY_PATH = / Applications / CPLEX_Studio_Community128 / opl / bin / x86-64_osx /
mvn clean test -Dtest = test.java.cplexTests.TestCplex
第二次尝试
mvn -DDYLD_LIBRARY_PATH = / Applications / CPLEX_Studio_Community128 / opl / bin / x86-64_osx / -Djava.library.path = / Applications / CPLEX_Studio_Community128 / opl / bin / x86-64_osx / -Dtest = test.java.cplexTests.TestCplex清洁测试
如果我从environmentVariables
删除maven
部分,则在运行InteliJ Idea时会出现同样的错误。