gpt4 book ai didi

java - 类未找到异常 : stream class checksum mismatch

转载 作者:行者123 更新时间:2023-12-02 05:41:35 25 4
gpt4 key购买 nike

我的远程(Linux)和本地(Windows)节点都使用相同的jdk版本1.7.0_45和gridgain 6.0.3并且启用了对等类加载。但我得到以下信息:

Caused by: java.lang.ClassNotFoundException: Optimized stream class checksum mismatch (is same version of marshalled class present on all nodes?) [expected=-3449, actual=7739, cls=class java.io.FileDescriptor]
at org.gridgain.grid.marshaller.optimized.GridOptimizedClassResolver.readClass(GridOptimizedClassResolver.java:345)

本地节点控制台有日志:

visor> [20:50:12] Local node's library list differs from remote node's
[20:50:12] <commons-lang-2.6.jar> vs. <not jar or zip file>
[20:50:12] <guava-14.0.1.jar> vs. <guava-15.0.jar>
[20:50:12] <javax.servlet-api-3.0.1.jar> vs. <servlet-api-2.4.jar>
[20:50:12] <jcommander-1.30.jar> vs. <jcommander-1.27.jar>
[20:50:12] <log4j-1.2.16.jar> vs. <log4j.jar>
[20:50:12]

代码

public final class GG_HelloWorld {

public static class GridCmd extends Command<GridEvt> {


@Override
protected void executeImpl() throws CommandException, InterruptedException {

final GridConfiguration config = getEvent().getConfig();


// task
GridComputeTask<String, Integer> task = new GridComputeTaskSplitAdapter<String, Integer>() {

@NotNull
@Override
protected Collection<? extends GridComputeJob> split(int gridSize,
@NotNull String arg) {

Collection<GridComputeJob> jobs = new LinkedList<>();

for (final String word : arg.split(" ")) {

jobs.add(new GridComputeJobAdapter() {

@Nullable
@Override
public Object execute() {

X.println(">>>");
X.println(">>> Printing '" + word
+ "' on this node from grid job.");
X.println(">>>");


// Return number of letters in the word.
return word.length();
}

});
}

return jobs;
}

@Nullable
@Override
public Integer reduce(@NotNull List<GridComputeJobResult> results) {
return results.size() - 1 + F.sumInt(F.<Integer>jobResults(results));
}

};

try (Grid g = G.start(config)) {

GridComputeTaskFuture<Integer> fut = g.compute().execute(task, "Hello Grid Enabled World!");


// Wait for task completion.
int phraseLen = fut.get();

X.println(">>>");
X.println(">>> Finished executing Grid \"Hello World\" example with custom task.");
X.println(">>> Total number of characters in the phrase is '" + phraseLen + "'.");
X.println(">>> Check all nodes for output (this node is also part of the grid).");
X.println(">>>");

} catch (GridException e) {
throw new CommandException(e);
}
}
}

}

文件相关代码仅由主节点调用。

最佳答案

看起来您正在尝试(有意或无意)通过网络发送java.io.FileDescriptor。我现在无法确认这一点,但我相信此类可能是特定于平台的,因此校验和不匹配。

另一方面,反序列化的文件描述符在远程计算机上无论如何都无效,因为它包含操作系统文件描述符/句柄。我认为这里的解决方案只是确保 java.io.FileDescriptor 的实例不会发送到远程节点。

如果您要发送匿名计算闭包,请尝试将其设为静态并将所有必需参数作为构造函数参数传递。这样,您将确保 java 编译器不会将额外的局部变量捕获到您的类中。

关于java - 类未找到异常 : stream class checksum mismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24463022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com