2016-08-19 3 views
3

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"); 
     ... 
     } 
    } 
} 

Antwort

2

Ich schlage vor, die folgendes zu tun:

  1. -Pack alle Ihre Anwendungsklassen (ohne Ignite Abhängigkeiten) in eine JAR und Legen Sie es in IGNITE_HOME/libs Ordner.
  2. Set MAIN_CLASS Umgebungsvariable zu Ihrer Hauptklasse (com.mycompany.app.App).
  3. Führen Sie IGNITE_HOME/bin/ignite.sh Skript. Es wird den Klassenpfadparameter für Java mit allen erforderlichen Ignite-Abhängigkeiten ordnungsgemäß bilden und Ihre Anwendung ausführen.
+0

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. –

+0

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). –

1

Da Klassen nicht durch unsere Java-Klasse identifiziert werden Siehe die folgenden Befehle

Installation auf Unix-

  1. herunterladen https://ignite.apache.org/download.cgi Website

  2. Apache-Ignite-Stoff-1.5. 0-b1-bin entpacken Sie diesen Ordner

    In t sein Beispiel mein "apache-ignite-fabric-1.5.0-b1-bin" -Verzeichnis befindet sich in "/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin"

  3. HelloWorld-Programm Beispiel:

    //program starting################################################################################################################################# 
    
    import org.apache.ignite.Ignite; 
    import org.apache.ignite.IgniteException; 
    import org.apache.ignite.Ignition; 
    import org.apache.ignite.IgniteCache; 
    //import org.apache.ignite.internal.util.spring; 
    public class HelloWorld { 
        public static void main(String[] args) throws IgniteException { 
        try (Ignite ignite = Ignition.start("/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/examples/config/example-ignite.xml")) { 
         // Put values in cache. 
         IgniteCache<Integer, String> cache = ignite.getOrCreateCache("myCache"); 
         cache.put(1, "Hello"); 
         cache.put(2, "World"); 
         cache.put(3,"Durga Prasad"); 
         // Get values from cache 
         // Broadcast 'Hello World' on all the nodes in the cluster. 
         ignite.compute().broadcast(()->System.out.println(cache.get(1) + " " + cache.get(2) + " " +cache.get(3))); 
        } 
        } 
    } 
    
    
    //end program ###################################################################################################################### 
    
  4. Diese HelloWorld.java Datei in erstellt wird "[stp @ ril-SRV-SP4 apache-zünden-Stoff-1.5.0-b1-ist] $ cd libs" location

    Bevor wir dieses Programm kompilieren, müssen wir alle "jar" -Standorte im Ordner "/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs" und in den Unterordnern identifizieren.

    [[email protected] apache-ignite-fabric-1.5.0-b1-bin]$ cd libs 
    javac -cp "/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-core-1.5.0-b1.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/cache-api-1.0.0.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-shmem-1.0.0.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-indexing/commons-codec-1.6.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-indexing/h2-1.3.175.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-indexing/ignite-indexing-1.5.0-b1.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-indexing/lucene-core-3.5.0.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/commons-logging-1.1.1.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-beans-4.1.0.RELEASE.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-expression-4.1.0.RELEASE.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/ignite-spring-1.5.0-b1.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-context-4.1.0.RELEASE.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-jdbc-4.1.0.RELEASE.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-aop-4.1.0.RELEASE.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-core-4.1.0.RELEASE.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-tx-4.1.0.RELEASE.jar" HelloWorld.java 
    
  5. Erstellen Sie eine JAR-Datei mit "HelloWorld.Klasse“

    jar -cf HelloWorld.jar HelloWorld.class 
    
  6. laufen diese JAR-Datei zusammen mit der Klasse

    [[email protected] libs]$ java -cp "/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-core-1.5.0-b1.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/cache-api-1.0.0.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-shmem-1.0.0.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-indexing/commons-codec-1.6.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-indexing/h2-1.3.175.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-indexing/ignite-indexing-1.5.0-b1.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-indexing/lucene-core-3.5.0.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/commons-logging-1.1.1.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-beans-4.1.0.RELEASE.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-expression-4.1.0.RELEASE.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/ignite-spring-1.5.0-b1.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-context-4.1.0.RELEASE.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-jdbc-4.1.0.RELEASE.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-aop-4.1.0.RELEASE.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-core-4.1.0.RELEASE.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/ignite-spring/spring-tx-4.1.0.RELEASE.jar:/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs/HelloWorld.jar" HelloWorld 
    [14:14:26] __________ ________________ 
    [14:14:26] /_/ ___/ |//_/_ __/ __/ 
    [14:14:26] _/ // (7 7 ////// _/ 
    [14:14:26] /___/\___/_/|_/___/ /_/ /___/ 
    [14:14:26] 
    [14:14:26] ver. 1.5.0-b1#20151202-sha1:062d440c 
    [14:14:26] 2015 Copyright(C) Apache Software Foundation 
    [14:14:26] 
    [14:14:26] Ignite documentation: http://ignite.apache.org 
    [14:14:26] 
    [14:14:26] Quiet mode. 
    [14:14:26] ^-- Logging to file '/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/work/log/ignite-6790e4dd.0.log' 
    [14:14:26] ^-- To see **FULL** console log here add -DIGNITE_QUIET=false or "-v" to ignite.{sh|bat} 
    [14:14:26] 
    [14:14:26] OS: Linux 3.10.0-327.el7.x86_64 amd64 
    [14:14:26] VM information: OpenJDK Runtime Environment 1.8.0_102-b14 Oracle Corporation OpenJDK 64-Bit Server VM 25.102-b14 
    [14:14:26] Configured plugins: 
    [14:14:26] ^-- None 
    [14:14:26] 
    [14:14:26] Security status [authentication=off, tls/ssl=off] 
    [14:14:28] Performance suggestions for grid (fix if possible) 
    [14:14:28] To disable, set -DIGNITE_PERFORMANCE_SUGGESTIONS_DISABLED=true 
    [14:14:28] ^-- Disable peer class loading (set 'peerClassLoadingEnabled' to false) 
    [14:14:28] ^-- Disable grid events (remove 'includeEventTypes' from configuration) 
    [14:14:28] 
    [14:14:28] To start Console Management & Monitoring run ignitevisorcmd.{sh|bat} 
    [14:14:28] 
    [14:14:28] Ignite node started OK (id=6790e4dd) 
    [14:14:28] Topology snapshot [ver=2, servers=2, clients=0, CPUs=4, heap=14.0GB] 
    Hello World Durga Prasad 
    [14:14:29] Ignite node stopped OK [uptime=00:00:00:633] 
    
  7. Öffnen Sie ein anderes Terminal mit Beispiel-ignite.xml Datei

    [[email protected] bin]$ ./ignite.sh "/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/examples/config/example-ignite.xml" 
    OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0 
    [14:14:17] __________ ________________ 
    [14:14:17] /_/ ___/ |//_/_ __/ __/ 
    [14:14:17] _/ // (7 7 ////// _/ 
    [14:14:17] /___/\___/_/|_/___/ /_/ /___/ 
    [14:14:17] 
    [14:14:17] ver. 1.5.0-b1#20151202-sha1:062d440c 
    [14:14:17] 2015 Copyright(C) Apache Software Foundation 
    [14:14:17] 
    [14:14:17] Ignite documentation: http://ignite.apache.org 
    [14:14:17] 
    [14:14:17] Quiet mode. 
    [14:14:17] ^-- Logging to file '/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/work/log/ignite-825641bf.0.log' 
    [14:14:17] ^-- To see **FULL** console log here add -DIGNITE_QUIET=false or "-v" to ignite.{sh|bat} 
    [14:14:17] 
    [14:14:17] OS: Linux 3.10.0-327.el7.x86_64 amd64 
    [14:14:17] VM information: OpenJDK Runtime Environment 1.8.0_102-b14 Oracle Corporation OpenJDK 64-Bit Server VM 25.102-b14 
    [14:14:17] Configured plugins: 
    [14:14:17] ^-- None 
    [14:14:17] 
    [14:14:17] Security status [authentication=off, tls/ssl=off] 
    [14:14:19] Performance suggestions for grid (fix if possible) 
    [14:14:19] To disable, set -DIGNITE_PERFORMANCE_SUGGESTIONS_DISABLED=true 
    [14:14:19] ^-- Disable peer class loading (set 'peerClassLoadingEnabled' to false) 
    [14:14:19] ^-- Disable grid events (remove 'includeEventTypes' from configuration) 
    [14:14:19] 
    [14:14:19] To start Console Management & Monitoring run ignitevisorcmd.{sh|bat} 
    [14:14:19] 
    [14:14:19] Ignite node started OK (id=825641bf) 
    [14:14:19] Topology snapshot [ver=1, servers=1, clients=0, CPUs=4, heap=1.0GB] 
    [14:14:28] New version is available at ignite.apache.org: 1.7.0 
    [14:14:28] Topology snapshot [ver=2, servers=2, clients=0, CPUs=4, heap=14.0GB] 
    Hello World Durga Prasad 
    [14:14:29] Topology snapshot [ver=3, servers=1, clients=0, CPUs=4, heap=1.0GB]