Java-программа не читает переменную среды, установленную из командной строки - PullRequest
0 голосов
/ 13 июня 2018

В моей 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, поэтому ошибка связывания библиотеки на следующем шаге.

Я пытался установить путь DYLD_LIBRARY_PATH перед запуском команды mvn, но это не помогает.Я попытался установить 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_os/ -Djava.library.path = / Applications / CPLEX_Studio_Community128 / opl / bin / x86-64_osx / -Dtest = test.java.cplexTests.TestCplex clean test

Если я удаляю секцию environmentVariables изmaven Я получаю ту же ошибку при запуске через InteliJ Idea.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...