2016-06-07 3 views
0

Так что у меня Maven проект, который я в конце концов построить в банку, который выглядит как:NoClassDefFoundError При использовании Eclipse, Cloud Foundry плагин

C:\Users\myTest\TESTJAR-1.0-jar-with-dependencies.jar

Если я нажимаю на облако литейный с помощью командной строки развертывает отлично:

cf push newProject -p C:\Users\myTest\TESTJAR-1.0-jar-with-dependencies.jar

Однако, когда я пытаюсь развертывания из Eclipse, используя плагин, я получаю следующее

'java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory'

Любая помощь будет оценена

enter image description here

pom.xml

` <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/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>test.myTest</groupId> 
<artifactId>TESTJAR</artifactId> 
<version>1.0</version> 
<packaging>jar</packaging> 

<name>test</name> 
<url>http://maven.apache.org</url> 

<properties> 
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
<java.version>1.8</java.version> 
<maven.compiler.source>1.8</maven.compiler.source> 
<maven.compiler.target>1.8</maven.compiler.target> 
</properties> 

<dependencies> 

<dependency> 
<groupId>commons-fileupload</groupId> 
<artifactId>commons-fileupload</artifactId> 
<version>1.2</version> 
</dependency> 

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>3.8.1</version> 
    <scope>test</scope> 
</dependency> 



<!-- http://mvnrepository.com/artifact/ch.qos.logback/logback-classic --> 
<dependency> 
<groupId>ch.qos.logback</groupId> 
<artifactId>logback-classic</artifactId> 
<version>1.1.7</version> 
</dependency> 


<dependency> 
<groupId>com.github.lalyos</groupId> 
<artifactId>jfiglet</artifactId> 
<version>0.0.7</version> 
</dependency> 

<dependency> 
<groupId>com.google.guava</groupId> 
<artifactId>guava</artifactId> 
<version>19.0</version> 
</dependency> 


<dependency> 
<groupId>com.google.code.gson</groupId> 
<artifactId>gson</artifactId> 
<version>2.6.1</version> 
</dependency> 

<dependency> 
<groupId>com.thoughtworks.xstream</groupId> 
<artifactId>xstream</artifactId> 
<version>1.4.8</version> 
</dependency> 


<dependency> 
<groupId>com.sparkjava</groupId> 
<artifactId>spark-core</artifactId> 
<version>2.3</version> 

<exclusions> 
    <exclusion> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j12</artifactId> 
    </exclusion> 
    <exclusion> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    </exclusion> 
</exclusions> 

</dependency> 

<dependency> 
<groupId>com.microsoft.sqlserver</groupId> 
<artifactId>sqljdbc4</artifactId> 
<version>4.0</version> 
</dependency> 

</dependencies> 
<build> 
<plugins> 

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>2.4.3</version> 
    <configuration> 
    </configuration> 
    <executions> 
    <execution> 
     <phase>package</phase> 
     <goals> 
     <goal>shade</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

<plugin> 
<artifactId>maven-assembly-plugin</artifactId> 
<executions> 
    <execution> 
    <phase>package</phase> 
    <goals> 
     <goal>single</goal> 
    </goals> 
    </execution> 
</executions> 
<configuration> 

    <archive> 
    <manifest> 
    <addClasspath>true</addClasspath> 
    <mainClass>com.myTest.Main</mainClass> 
    </manifest> 
    </archive> 

    <descriptorRefs> 
    <descriptorRef>jar-with-dependencies</descriptorRef> 
    </descriptorRefs> 

    </configuration> 
    </plugin> 
    </plugins> 
    </build> 
    </project>' 

ответ

0

Jar упакованные приложения могут быть переданы к облачному литейному заводу с использованием инструментов для литья под открытым небом Eclipse (CFT) двумя способами:

  1. Задание файла манифеста YAML на верхнем уровне в проекте Eclipse Maven, который указывает на jar в файловой системе, которую вы хотите нажать, используя атрибут «путь». Например, в проекте рабочего пространства, MyTestMavenProject, вы бы что-то вроде:

MyTestMavenProject/manifest.yml

с содержимым файла манифеста

--- 
applications: 
- name: testjarapp 
    path: C:\Users\myTest\TESTJAR-1.0-jar-with-dependencies.jar 

Перетащите и отпустите проект, содержащий этот файл манифеста, в цель Cloud Foundry в представлении Eclipse Servers.

  1. Перетащите проект Maven без файла манифеста, а CFT автоматически упакует приложение до нажатия в Cloud Foundry. Однако этот механизм имеет некоторые известные проблемы для jar-packaged приложений. В некоторых случаях проект должен быть обновлен вручную перед перетащить/падение:

    • Обновить проект (обычно F5)
    • правой кнопкой мыши на проекте: Maven -> Project Update
    • Drag/Drop проект Maven на цель CF в Сервера зрения еще раз, чтобы увидеть, если он правильно развертывает

Существует ошибка, которая отслеживает вопрос здесь:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=495814

вехи ПФТ выпускаются примерно каждые 6 недель, так что следующий этап после того, как Eclipse, неон (4.6) будет иметь различные исправления и улучшения для развертывания JAR-упакованных приложений.