编程语言
首页 > 编程语言> > java-在命令行上运行Apache Ignite时无法创建Ignite组件

java-在命令行上运行Apache Ignite时无法创建Ignite组件

作者:互联网

当开始学习点火时,我最终将IntelliJ用作IDE,并且运行良好.但是,我需要将其移至超级计算机环境中,并且需要能够从命令行运行它,但是我的代码却无法找到所需的类.我使用maven创建了项目,并添加了入门指南中提到的适当依赖项.之后,我将项目打包为maven并使用以下命令:

/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

但是,无法创建带有以下错误的点火组件:

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

寻找其他类似的问题,我发现这是因为未能在pom文件中包含ignite-spring.但是我已经包括了.这是我的pom文件:

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

我要去哪里错了?重要的IDE导致某些事情变得不一致了吗?我运行代码的命令是否不完整或错误?谢谢您的帮助.如果需要,这里是发生错误的代码的第一行:

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

解决方法:

我建议执行以下操作:

>将所有应用程序类(无Ignite依赖项)打包到JAR中,并将其放入IGNITE_HOME / libs文件夹中.
>将MAIN_CLASS环境变量设置为您的主类(com.mycompany.app.App).
>运行IGNITE_HOME / bin / ignite.sh脚本.它将使用所有必需的Ignite依赖关系正确地形成Java的classpath参数,并将运行您的应用程序.

标签:maven,ignite,java
来源: https://codeday.me/bug/20191026/1938981.html