2016-07-28 3 views
0

Я использую Matlab MCR в веб-проекта, так что я импортировал эти dependecies в pom.xml

<!-- Matlab client tool library --> 
    <!-- <dependency> 
      <groupId>DataConcatenation</groupId> 
      <artifactId>DataConcatenation</artifactId> 
      <version>0.0.5-SNAPSHOT</version> 
     </dependency> --> 
<!--  <dependency> 
      <groupId>DataConcatenator</groupId> 
      <artifactId>DataConcatenator</artifactId> 
      <version>0.0.5-SNAPSHOT</version> 
     </dependency> --> 
<!--  <dependency> 
      <groupId>DataConversion</groupId> 
      <artifactId>DataConversion</artifactId> 
      <version>0.0.5-SNAPSHOT</version> 
     </dependency> --> 
     <dependency> 
      <groupId>DataConverter</groupId> 
      <artifactId>DataConverter</artifactId> 
      <version>0.0.5-SNAPSHOT</version> 
      <exclusions> 
       <exclusion> 
        <artifactId>DataConcatenation</artifactId> 
        <groupId>DataConcatenation</groupId> 
       </exclusion> 
       <exclusion> 
        <artifactId>DataConcatenator</artifactId> 
        <groupId>DataConcatenator</groupId> 
       </exclusion> 
       <exclusion> 
        <artifactId>DataConversion</artifactId> 
        <groupId>DataConversion</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

Первые проблемы в том, что я должен исключить другие зависимости дерева, даже если я использую только DataConverter, но мне нужен только dataConverter, и эта библиотека не имеет других зависимостей. Вторая и наиболее важная проблема, эта ошибка:

Threw exception in ZipAndMat::createZipAndMat: java.lang.UnsatisfiedLinkError: Native Library /usr/v81/bin/glnxa64/libnativedl.so already loaded in another classloader 

Я много читал руководство, и я понимаю, что я должен поставить эту банку в $ CATALINA_HOME/Shared/Lib поэтому все доли загрузчика классов той же банка , Но как я могу добавить этот dependecy к указанному выше пути? Это первый раз, когда я должен реализовать эту конфигурацию. Я использую tomcat на своем сервере и развертываю проект через военный файл. Благодаря

+0

Если нужно указать зависимость от пути, вы можете использовать системы зависимости https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism .html # System_Dependencies, но я не уверен, что это то, что вы хотите. –

+0

Мне нужно иметь родную библиотеку, совместно используемую между всеми classLoader, у меня уже есть этот dependecy в maven – luca

ответ

0

Вы можете поместить банку в $ CATALINA_HOME/Shared/Lib, а затем укажите в ПОМ зависимость-х <scope> как «при условии»:

<dependency> 
     <groupId>DataConverter</groupId> 
     <artifactId>DataConverter</artifactId> 
     <version>0.0.5-SNAPSHOT</version> 
     <scope>provided</scope> 
     <exclusions> 
      ... 
     </exclusions> 
    </dependency> 

Этот метод часто используется для банок, содержащих JDBC драйверов при работе на Tomcat; jdbc jar помещается в $ CATALINA_HOME/shared/lib (так что все войны могут его найти), но каждый список проектов - это jdbc jar как зависимость с provided как область действия.

this post См для получения дополнительной информации о provided

+0

из документации Tomcat https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html. Я использовал 'provided', и я поместил библиотеку в $ CATALINA_HOME/lib, похоже, это работа. благодаря – luca

Смежные вопросы