Попытка загрузить «так» библиотеку с помощью Spring Boot приводит к ошибке - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь загрузить внешнюю библиотеку с помощью Spring Boot:

@Service
public class PrevisaoDLLService {
    private Logger logger = LoggerFactory.getLogger( PrevisaoDLLService.class );
    private PrevisaoDLL previsaoDll;

    // Some code of functions are out of scope and ommited

    @PostConstruct
    public void startup() {
        logger.info( System.getProperty("java.library.path" ) );
        try {
            previsaoDll = Native.loadLibrary( /*lib*/"previsao"/*.so*/, PrevisaoDLL.class); // libprevisao.so
        } catch ( Exception e ) {
            logger.error( e.getMessage() );
        }
    }


}

Я уже поместил "-Djna.library.path=/opt/libraries и -Djava.library.path=/opt/libraries в свою командную строку.

После получения этой ошибки

Caused by: java.lang.UnsatisfiedLinkError: Unable to load library 'previsao': Native library (linux-x86-64/libprevisao.so) not found in resource path ([jar:file:/opt/lib/mare-1.0.war!/WEB-INF/classes!/, jar:file:/opt/lib/mare-1.0.war!/WEB-INF/lib/springfox-swagger-ui-2.9.2.jar!/, jar:file:/opt/lib/mare-1.0.war!/WEB-INF/lib/spring-boot-starter-logging-2.1.9.RELEASE.jar!/, jar:file:/opt/lib/mare-1.0.war!/WEB-INF/lib/spring-boot-starter-jdbc-2.1.9.RELEASE.jar!/, jar:file:/opt/lib/mare-1.0.war!/WEB-INF/lib/spring-webmvc-5.1.10.RELEASE.jar!/,  Blah Blah Blah 

Я попробовал другой подход, поместив мою библиотеку в папку «ресурсы» (вместе с pplication.config), но затем я начал получать эту ошибку:

java.lang.UnsatisfiedLinkError: Unable to load library 'previsao': Can't obtain InputStream for linux-x86-64/libprevisao.so

Я тестировал этот метод с автономным (стандартным) java работающим JAR, и все работало нормально. Но когда я перенес тот же код в приложение Spring Boot, все пошло не так. Мое приложение Spring Boot APP - это исполняемая WAR (не JAR), потому что Swagger и мои контроллеры ...

Строка logger.info( System.getProperty("java.library.path" ) ); правильно показывает мне папку, которую я указал в аргументе командной строки, и библиотека там .

Почему Spring Boot не загружает мою библиотеку?

...