2012-10-26 34 views
1

我一直在嘗試使用ImageJ 1.45/ImageJA的ParticleAnalyzer構建圖像處理應用程序。該算法已經在我的Mac上完美測試過了,但是當我將可運行jar發送到hadoop集羣時,它一直拋出awt無頭異常。我在網上查找並嘗試了這些方法,但他們都沒有解決問題!在hadoop中使用ImageJ並獲得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) 
+0

您是否在您的Hadoop機器上安裝了Xvfb? –

+0

我不是集羣管理員,所以我不能......任何其他方式? – user1367692

+0

另請參閱此[文章](http://imagejdocu.tudor.lu/doku.php?id=faq:technical:how_do_i_run_imagej_without_a_graphics_environment_headless)。 – trashgod

回答

1

Fiji project已投入大量的努力,使腦子的操作與ImageJ的比較可行的,但仍存在一定的侷限性。

三大解決方案是:

  1. 運行斐濟使用--headless標誌
  2. 使用Xvfb
  3. 重寫劇本或插件有問題

這就是說,在這種情況下,由於「有問題的腳本或插件」實際上是ImageJ構建在粒子分析器中的,所以--headless的方法應該可行。

有關完整的詳細信息,請參閱headless mode上的文章。

相關問題