Ошибка чистой установки Playn mvn "NoClassDefFoundError: playn/core/game

так что в течение долгого времени я искал в Интернете, постоянно просматривая проблемы и исправления других людей, надеясь, что они будут благоговейно относиться к моей проблеме, но я не могу найти никого с такой же проблемой, связанной с playn.

я могу запустить «mvn test», небольшой проект cmd и mu работает отлично, однако, когда я наконец прихожу к экспорту проекта с помощью «mvn clean install» и пытаюсь запустить myApp-core-1.0-SNAPSHOT.jar, я получаю исключение:

Exception in thread "main" java.NoClassDefFoundError: playn/core/game

мне просто интересно, сталкивался ли кто-нибудь с этой проблемой в прошлом и может указать мне правильное направление для ее преодоления, так как это приложение является моей курсовой работой A-level и должно быть передано в ближайшее время, я очень беспокоюсь, что могу не достичь крайний срок сдачи дат, я очень надеюсь, что этого не произойдет D:

это мой myApp-core 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>
<parent>

<groupId>com.ALevelWork</groupId>
<artifactId>zombiepanic</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>

<artifactId>zombiepanic-core</artifactId>
<packaging>jar</packaging>
<name>ZombiePanic Core</name>

<dependencies>
<dependency>
  <groupId>com.googlecode.playn</groupId>
  <artifactId>playn-jbox2d</artifactId>
  <version>${playn.version}</version>
</dependency>

<dependency>
  <groupId>com.googlecode.playn</groupId>
  <artifactId>playn-core</artifactId>
  <version>${playn.version}</version>
</dependency>

</dependencies>

<build>
<plugins>   

    <plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
  <manifest>
  <addClasspath>true</addClasspath>
  <classpathPrefix>lib/</classpathPrefix>
      <mainClass> ZombiePanic.core.ZombiePanic</mainClass>
  </manifest>
 </archive>
 </configuration>
 </plugin>

   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
  </plugin>
  </plugins>

  <resources>
  <!-- include the source files in our main jar for use by GWT -->
  <resource>
    <directory>${project.build.sourceDirectory}</directory>
  </resource>
  <!-- and continue to include our standard resources -->
  <resource>
    <directory>${basedir}/src/main/resources</directory>
    </resource>
  </resources>
 </build>
 </project>

Заранее спасибо,

Джейкоб


person WockaWocka    schedule 26.12.2012    source источник
comment
Что обычно означает NoClassDefFoundError?   -  person Thorbjørn Ravn Andersen    schedule 26.12.2012
comment
из исследования ошибки я думаю, что это означает, что класс был найден во время процесса компиляции, но не был найден во время процесса выполнения, .... я думаю   -  person WockaWocka    schedule 26.12.2012
comment
Это означает, что полученный файл jar не содержит всех необходимых зависимостей.   -  person khmarbaise    schedule 26.12.2012
comment
это то, что я думал, но я уже добавил зависимость com.googlecode.playn (playn-core), в которой находится playn/core/Game.jar, поэтому я немного запутался и нуждаюсь в некоторой помощи.   -  person WockaWocka    schedule 26.12.2012
comment
Что вы сделали, чтобы JVM могла найти класс во время выполнения?   -  person Thorbjørn Ravn Andersen    schedule 27.12.2012
comment
Я недавно исправил эту проблему, любой, кто получает те же ошибки, загляните в uberjars и просмотрите это руководство (jameswilliams. be/blog/entry/255), много мне помогло, спасибо всем за помощь.   -  person WockaWocka    schedule 27.12.2012


Ответы (1)


я исправил эту проблему, следуя этому руководству (http://jameswilliams.be/blog/entry/255), я не связывал ядро ​​зомбипании с серверной частью java (zombiepanic-java), чтобы сделать это, вам нужно сначала добавить этот плагин в бэкэнд java pom.xml:

<plugin>
    <groupId>org.sonatype.plugins</groupId>
    <artifactId>jarjar-maven-plugin</artifactId>
<version>1.5</version>
<executions>
    <execution>
        <phase>package</phase>
        <goals>
            <goal>jarjar</goal>
        </goals>
        <configuration>
            <rules />
        </configuration>
    </execution>
</executions>

как только вы это сделаете, свяжите его с основным классом (zombiepanic-core), добавив это также в бэкэнд java pom.xml:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.YourPackage.java.JarJarDemoJava</mainClass> </manifest> </archive> </configuration> </plugin>

не забудьте связать основной класс с вашей серверной версией Java, например, ZombiePanicJava вместо основной версии, которая является просто ZombiePanic.

person WockaWocka    schedule 27.12.2012