Java 我们为什么需要ignite.sh脚本?

Java 我们为什么需要ignite.sh脚本?,java,ignite,Java,Ignite,我是ignite的新手,尝试运行我的简单多节点计算示例。我编写了以下简单的应用程序: try(Ignite ignite = Ignition.start("example-cache.xml")){ IgniteCompute asyncCompute = ignite.compute().withAsync(); for(int i = 0; i < 100; i++) { int[] a = new int[1];

我是ignite的新手,尝试运行我的简单多节点计算示例。我编写了以下简单的应用程序:

try(Ignite ignite = Ignition.start("example-cache.xml")){
       IgniteCompute asyncCompute = ignite.compute().withAsync();
       for(int i = 0; i < 100; i++) {
           int[] a = new int[1];
           a[0] = i;
           asyncCompute.call(() -> {
               out.println(a[0]);
               return a[0];
           });
       }
 }

这个例外是非常清楚的。但是我们需要ignite.sh脚本做什么呢?

您应该在类路径中为所有ignite节点添加应用程序类,或者 启用对等类加载[1]


[1]

您应该将JAR文件添加到Apache Ignite安装文件夹下的lib/文件夹中。然后可以启动ignite.sh,所有类都将自动加载


或者,您可以尝试按照上述建议启用对等类加载,Ignite将自动加载这些类。

谢谢您的建议。但推荐的方法是什么?取决于您的要求。在开发中,我绝对建议打开对等类加载,因为它将为您节省大量部署时间。如果遇到问题,则切换到JAR部署。
class org.apache.ignite.IgniteCheckedException: com.test.App
        at org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:9826)
        at org.apache.ignite.internal.processors.job.GridJobWorker.initialize(GridJobWorker.java:432)
        at org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1108)
        at org.apache.ignite.internal.processors.job.GridJobProcessor$JobExecutionListener.onMessage(GridJobProcessor.java:1894)
        at org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1222)
        at org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:850)
        at org.apache.ignite.internal.managers.communication.GridIoManager.access$2100(GridIoManager.java:108)
        at org.apache.ignite.internal.managers.communication.GridIoManager$7.run(GridIoManager.java:790)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: class org.apache.ignite.binary.BinaryInvalidTypeException: com.test.App
        at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:692)
        at org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1486)
        at org.apache.ignite.internal.binary.BinaryUtils.doReadClass(BinaryUtils.java:1424)
        at org.apache.ignite.internal.binary.BinaryReaderExImpl.readClass(BinaryReaderExImpl.java:370)
        at org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.readFixedType(BinaryFieldAccessor.java:828)
        at org.apache.ignite.internal.binary.BinaryFieldAccessor$DefaultFinalClassAccessor.read(BinaryFieldAccessor.java:639)
        at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:833)
        at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1498)
        at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1450)
        at org.apache.ignite.internal.binary.BinaryUtils.doReadObject(BinaryUtils.java:1640)
        at org.apache.ignite.internal.binary.BinaryReaderExImpl.readObject(BinaryReaderExImpl.java:1124)
        at org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2V2.readBinary(GridClosureProcessor.java:2073)
        at org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:823)
        at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1498)
        at org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1450)
        at org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:298)
        at org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal0(BinaryMarshaller.java:99)
        at org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:82)
        at org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:9820)
        ... 10 more
Caused by: java.lang.ClassNotFoundException: com.test.App
        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)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at org.apache.ignite.internal.util.IgniteUtils.forName(IgniteUtils.java:8459)
        at org.apache.ignite.internal.MarshallerContextAdapter.getClass(MarshallerContextAdapter.java:185)
        at org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:683)