2016-09-12 2 views
1

Еще одно обновление ... После загрузки файла sapjco3.jar в мой локальный репозиторий maven я могу успешно скомпилировать свой код. После развертывания этого кода на моем Linux-сервере tomcat, я получаю сообщение об ошибке «не разрешено переименовывать файл jar». По-видимому, это распространенная проблема с файлом sapjco3.jar версии 3.0.10 и выше. Все еще ищут решение этого.Ошибка компиляции с помощью Spring Tool Suite Maven

Обновление ... После настройки файла pom.xml и изменения компилятора проекта на java 1.8, я больше не получаю «путь класса bootstrap, не установленный вместе с -source 1.6». Однако при компиляции я все еще получаю «пакет com.sap.conn.jco не существует». Любые другие мысли о том, что мне нужно сделать, чтобы этот файл jar отображался при компиляции?

Оригинальное сообщение: Я пытаюсь получить приложение Spring MVC для компиляции с использованием Maven в Spring Tool Suite, и я получаю «путь класса bootstrap, не установленный вместе с -source 1.6».

Я использую Spring Tool Suite 3.7.2, и я выдаю команды Maven через меню содержимого Spring Tool Suite для выполнения команд очистки, компиляции, установки и развертывания (другими словами, я не использую Maven). Системная библиотека JRE, которая по умолчанию сконфигурирована в пути сборки, - это JavaSE-1.6. Я работаю с фреймворком Spring MVC, а версия java в файле pom.xml - 1.6.

Я создал папку под названием «lib» в корне проекта, и я добавил в эту папку сторонний файл jar (sapjco3.jar). Я добавил этот файл jar в путь сборки проекта.

Когда я бегу цели «Maven компиляции», я получаю ошибку компиляции, а вот верх ошибки:

[INFO] ------------------------------------------------------------- 
[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] bootstrap class path not set in conjunction with -source 1.6 
C:\Users\user\Documents\workspace-sts- 3.7.2.RELEASE\JCOTest\src\main\java\com\graybar\jcotest\query\SAPDAO.java: [10,23] error: package com.sap.conn.jco does not exist 

В классах моего проекта, где я ссылающийся на кода в файле sapjco3.jar, они отображаются очень хорошо, и мой код работает нормально. Однако, чтобы заставить мой код запускаться локально, мне пришлось добавить версию windows sapjco3 driver, sapjco3.dll, в папку c: \ windows \ system32 на моей рабочей станции.

Я подозреваю, что моя проблема связана с кодом sapjco3, который не отображается при компиляции. Я попытался добавить файлы sapjco3.jar и sapjco3.dll в папку jdk 1.6 lib, и я добавил те же файлы в папку lib в папке jre для jdk 1.6.

Я также попытался отключить java 1.6 для java 1.8 без успеха.

Я нахожусь на правильном пути здесь относительно кода sapjco3.jar, который не отображается во время процесса компиляции? Моя конечная цель - развернуть этот код на версию tomcat 1.8 на основе Linux.

Вот мой полный pom.xml файл:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
<groupId>com.graybar</groupId> 
<artifactId>jcotest</artifactId> 
<name>JCOTest</name> 
<packaging>war</packaging> 
<version>1.0.0-BUILD-SNAPSHOT</version> 
<properties> 
    <java-version>1.8</java-version> 
    <org.springframework-version>3.1.1.RELEASE</org.springframework-version> 
    <org.aspectj-version>1.6.10</org.aspectj-version> 
    <org.slf4j-version>1.6.6</org.slf4j-version> 
</properties> 
<dependencies> 
    <!-- Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${org.springframework-version}</version> 
     <exclusions> 
      <!-- Exclude Commons Logging in favor of SLF4j --> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 

    <!-- AspectJ --> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>${org.aspectj-version}</version> 
    </dependency> 

    <!-- Logging --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${org.slf4j-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
     <version>${org.slf4j-version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>${org.slf4j-version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.15</version> 
     <exclusions> 
      <exclusion> 
       <groupId>javax.mail</groupId> 
       <artifactId>mail</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>javax.jms</groupId> 
       <artifactId>jms</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jdmk</groupId> 
       <artifactId>jmxtools</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jmx</groupId> 
       <artifactId>jmxri</artifactId> 
      </exclusion> 
     </exclusions> 
     <scope>runtime</scope> 
    </dependency> 

    <!-- @Inject --> 
    <dependency> 
     <groupId>javax.inject</groupId> 
     <artifactId>javax.inject</artifactId> 
     <version>1</version> 
    </dependency> 

    <!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 

    <!-- Test --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.7</version> 
     <scope>test</scope> 
    </dependency>   

</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <version>2.9</version> 
      <configuration> 
       <additionalProjectnatures> 
        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> 
       </additionalProjectnatures> 
       <additionalBuildcommands> 
        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> 
       </additionalBuildcommands> 
       <downloadSources>true</downloadSources> 
       <downloadJavadocs>true</downloadJavadocs> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2.1</version> 
      <configuration> 
       <mainClass>org.test.int1.Main</mainClass> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Спасибо!

-Stephen Spalding

+0

Вы должны установить версию jdk 8 в windows -> preference -> java -> compiler – SMA

+0

В соответствии с вашим предложением я перешел в Windows -> Preferences -> Java -> Compiler, и я изменил ' Уровень соответствия компилятора 'до 1.8. Я также обновил библиотеку JRE System до версии jdk 1.8, а также удалил другие jdks из области Windows -> Настройки -> Java -> Установленные JREs. К сожалению, у меня все еще такая же проблема. – Stephen

+0

щелкните правой кнопкой мыши по вашему проекту -> свойства -> java-компилятор, установите уровень jdk в 1.8 – SMA

ответ

0

Вы можете использовать хранилище пользовательского проекта

<!– In Project repository –> 
<repository> 
    <id>in-project</id> 
    <name>In Project Repo</name> 
    <url>file://${project.basedir}/libs</url> 
</repository> 

, а затем вызвать вашу баночку

<dependency> 
    <groupId>sapjco3</groupId> 
    <artifactId>sapjco3</artifactId> 
    <version>1.3.1</version> 
</dependency> 

другого вариант поместить файл банки в папке .m2, но это не очень хорошая практика. Вы можете прочитать эту статью how to add a custom jar in maven.

Другой способ добавить путь к вашему банку на блоке зависимостей:

<dependency> 
    <groupId>sapjco3</groupId> 
    <artifactId>com.sapjco3</artifactId> 
    <version>1.0</version> 
    <scope>system</scope> 
    <systemPath>${project.basedir}/src/main/resources/sapjco3.jar</systemPath> 
</dependency> 

Я надеюсь, что это помогает.

+0

Спасибо Диего! Я пробовал последнее предложение добавить путь к банке в качестве зависимости. Я добавил файл sapjco3.jar в папку src/main/resources для размещения. Проблема, с которой я столкнулся сейчас, заключается в том, что после развертывания на моем сервере dev linux я получаю «HTTP Status 500 - обработка обработчика не выполнена; Вложенное исключение - java.lang.NoClassDefFoundError: com/sap/conn/jco/AbapException '. Есть предположения? – Stephen

+0

Я предполагаю, что AbabException - это класс из sapjco3.jar. Попробуйте запустить чистую установку maven перед экспортом своего военного файла или экспортировать войну своими собственными ресурсами. Вы должны быть уверены в том, что все библиотеки, которые вам нужны, также находятся на вашем dev-сервере. –

+0

Да, я всегда делаю чистый, прежде чем компилировать, устанавливать и передислоцировать на tomcat. Я скопировал файл sapjco3.jar в папку/opt/tomcat/lib и перезапустил там сервер. Приложение просто не видит его. Когда вы смотрите на взорванную папку на сервере dev tomcat, я могу видеть все мои зависимости в папке WEB-INF/lib, но файла sapjco3.jar нет.Мне интересно, как добавить его, не добавляя номер версии. – Stephen

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