Als ich anfing, zünden zu lernen, endete ich mit IntelliJ als IDE und es hat gut funktioniert. Allerdings muss ich es in eine Supercomputer-Umgebung verschieben und muss es über die Befehlszeile ausführen können, aber ich habe Probleme damit, dass mein Code die benötigten Klassen finden kann. Ich habe mein Projekt erstellt, indem ich maven die richtigen Abhängigkeiten hinzugefügt habe, wie in der Einführung erwähnt. Im Anschluss an, dass ich Maven Paket hatte das Projekt und verwendet, um den folgenden Befehl ein:Fehler beim Erstellen von Ignite Component beim Ausführen von Apache Ignite auf der Befehlszeile
/usr/java/jdk1.8.0_91/bin/java -cp "${IGNITE_HOME}/modules/core/target/ignite-core-1.6.0.jar:${IGNITE_HOME}/modules/core/target/libs/cache-api-1.0.0.jar:${IGNITE_HOME}/modules/spring/target/ignite-spring-1.6.0.jar:target/my-app-1.0-SNAPSHOT.jar" com.mycompany.app.App
aber es versagt eine Ignite-Komponente mit dem folgenden Fehler zu erzeugen:
Exception in thread "main" class org.apache.ignite.IgniteException: Failed to create Ignite component (consider adding ignite-spring module to classpath) [component=SPRING, cls=org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl]
at org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:906)
at org.apache.ignite.Ignition.start(Ignition.java:350)
at com.mycompany.app.App.main(App.java:24)
Caused by: class org.apache.ignite.IgniteCheckedException: Failed to create Ignite component (consider adding ignite-spring module to classpath) [component=SPRING, cls=org.apache.ignite.internal.util.spring.IgniteSpringHelperImpl]
at org.apache.ignite.internal.IgniteComponentType.componentException(IgniteComponentType.java:313)
at org.apache.ignite.internal.IgniteComponentType.create0(IgniteComponentType.java:289)
at org.apache.ignite.internal.IgniteComponentType.create(IgniteComponentType.java:200)
at org.apache.ignite.internal.IgnitionEx.loadConfigurations(IgnitionEx.java:637)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:840)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:749)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:619)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:589)
at org.apache.ignite.Ignition.start(Ignition.java:347)
... 1 more
Caused by: java.lang.NoClassDefFoundError: org/springframework/beans/BeansException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.apache.ignite.internal.IgniteComponentType.create0(IgniteComponentType.java:275)
... 8 more
Caused by: java.lang.ClassNotFoundException: org.springframework.beans.BeansException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 11 more
der Suche nach anderen psimilar Problemen, ich Ich habe gesehen, dass es wegen der fehlenden Zündung in der Pom-Datei fehlt. Aber ich habe das aufgenommen. Hier ist meine Pom-Datei:
<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.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-core</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-spring</artifactId>
<version>1.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-indexing</artifactId>
<version>1.6.0</version>
</dependency>
</dependencies>
</project>
Wohin gehe ich falsch? Hat in der IDE etwas dazu geführt, dass etwas inkonsistent wurde? Ist mein Befehl zum Ausführen des Codes unvollständig oder fehlerhaft? Danke für die Hilfe. Wenn hier erforderlich sind die ersten Zeilen von meinem Code, wo der Fehler auftritt:
package com.mycompany.app;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.Ignition;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.StringTokenizer;
public class App
{
public static void main(String[] args) {
printClasspath();
String data;
try {
data = readFile("tweet.txt");
Ignite ignite = Ignition.start("/ignite-1.6.0/examples/config/example-ignite.xml");
IgniteCache<Integer, String[]> cache = ignite.getOrCreateCache("myCacheName");
...
}
}
}
Danke für die schnelle Antwort, die ich war in der Lage, es auf diese Weise arbeiten zu lassen. Ich fragte mich, ob dies der bevorzugte Weg war, eine App auf gezündet zu betreiben. Ist das der einzige Weg? es zu tun? Ich frage, weil wir in unserem Setup nicht möchten, dass jeder Benutzer seine JARs in die freigegebenen IGNITE_HOME/libs schreibt. Wie würden Sie mehrere Server miteinander verbinden, wenn alle versuchen, die Hauptklasse auszuführen? Ich habe nicht zu viel mit dem Management-System, aber die Grid-Manager-Fehler, wenn ich versuche, einige Server einrichten, ohne die Haupt-Klasse eingestellt ist dann laufen eine mit ihm gesetzt. –
Sie können so viele eigenständige Server starten, wie Sie möchten. Der oben gezeigte Ansatz ist nur eine der Möglichkeiten, die Anwendung mit Ignite-Abhängigkeiten auszuführen (offensichtlich nicht die einzige). –