我一直在尝试使用 ImageJ 1.45 / ImageJA 的 ParticleAnalyzer 构建图像处理应用程序。该算法已在我的 Mac 上完美测试,但是当我将可运行的 jar 发送到 hadoop 集群时,它一直抛出 awt 无头异常。我在网上查过并尝试了这些方法,但没有一个能解决问题!
http://imagej.1557.n6.nabble.com/Headless-ImageJ-td3699125.html
此外,我试图在现场捕捉异常,但后来我发现 ParticleAnalyzer 并没有真正运行(它一直返回 0 粒子,这是错误的。我的 mac 给出了非零结果!)。这是 java 代码部分,后面是我从 hadoop 日志中复制的异常。
如果有人有在 Hadoop 上使用 ImageJ 的成功故事,您能给我一个可靠的代码示例吗?
提前致谢。
try{
ParticleAnalyzer pa = new ParticleAnalyzer(options, measurements,
rt, THRES_AREA, 10000, 0, 1);
pa.setup("victor", result);
pa.run(result.getProcessor());
}catch(Exception e){
System.out.println("engine: awt error!");
}
java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
at java.awt.Window.<init>(Window.java:431)
at java.awt.Frame.<init>(Frame.java:403)
at java.awt.Frame.<init>(Frame.java:368)
at ij.gui.GenericDialog.<init>(GenericDialog.java:87)
at ij.plugin.filter.ParticleAnalyzer.showDialog(ParticleAnalyzer.java:265)
at ij.plugin.filter.ParticleAnalyzer.setup(ParticleAnalyzer.java:220)
.....
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1083)
at org.apache.hadoop.mapred.Child.main(Child.java:249)