Reputation: 43
When starting to learn ignite, I ended up using IntelliJ as an IDE and it has been working fine. However I need to move it over onto a supercomputer environment and need to be able to run it from the command line but am having trouble with my code being able to find the needed classes. I created my project using maven added the proper dependencies as mentioned in the getting started guide. Following that I had maven package the project and used the following command:
/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
However it is failing to create an ignite component with the following error:
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
Looking for other psimilar problems, I've seen that it is because of failure to include ignite-spring in the pom file. However I have included that. Here is my pom file:
<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>
Where am I going wrong? Has important into the IDE caused something to become inconsistent? Is my command for running the code incomplete or erroneous? Thanks for the help. If needed here are the first lines of my code where the error is occurring:
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");
...
}
}
}
Upvotes: 4
Views: 9655
Reputation: 1202
Because classes are not identified by our java class Refer the following commands
INSTALLATION ON UNIX
Download https://ignite.apache.org/download.cgi site
apache-ignite-fabric-1.5.0-b1-bin unzip this folder
In this example my "apache-ignite-fabric-1.5.0-b1-bin " directory located in "/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin"
HelloWorld program Example:
//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 ######################################################################################################################
This HelloWorld.java file is created in "[stp@ril-srv-sp4 apache-ignite-fabric-1.5.0-b1-bin]$ cd libs" location
Before compiling this program we have to identify the all jar locations in "/home/stp/ignite/apache-ignite-fabric-1.5.0-b1-bin/libs" folder and inside the subfolders also.
[stp@ril-srv-sp4 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
create a jar file using "HelloWorld.class"
jar -cf HelloWorld.jar HelloWorld.class
run this jar file along with class
[stp@ril-srv-sp4 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]
Open another terminal with example-ignite.xml file
[stp@ril-srv-sp4 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]
Upvotes: 2
Reputation: 8390
I suggest to do the following:
IGNITE_HOME/libs
folder.MAIN_CLASS
environment variable to your main class (com.mycompany.app.App
).IGNITE_HOME/bin/ignite.sh
script. It will properly form the classpath parameter for Java with all required Ignite dependencies and will run your application.Upvotes: 3