2017-02-22 9 views
0

我想使用ITCN插件來計算ImageJ環境中使用javascripts的圖像中的nuclie數量。我的舊版(ImageJ 1.49xx)javascript不再有效,因爲所有內容都已更改爲ImageJ1.51xx的Java 8編譯器。在這篇文章的幫助下,(http://forum.imagej.net/t/itcn-threshold-option-missing/1095/3)和這個(ImageJ jar file plugin shortcut creation - More help needed)我取得了一些進展。無法使用ITCN_Runner通過javascript(插件中的可能的錯誤)

下面是一個簡單的示例代碼: -

//importing the requisite packages 
    importClass(Packages.ij.ImagePlus); 
    importClass(Packages.ITCN_Runner); 

    var filename = 'Path/to/8bit/single/channel/.tiff/file' 

    //make a ImagePlus object 

    var imp = new ImagePlus(fileName);        

    //Call ITCN_runner to generate results window 

    var runner = new ITCN_Runner(imp, 
    24, /* width*/ 
    12, /* minimum distance */ 
    0.5, /* threshold */ 
    false, /* detect dark peaks */ 
    null /* mask ImagePlus */) 

當我運行上面的腳本,我碰到下面的錯誤: -

TypeError: new cannot be used with non-public java type ITCN_Runner. 
     at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57) 
    Followed by several lines... 

我的猜測是,這是因爲造成ITCN_.jar中的ITCN_Runner.class沒有將ITCN_Runner類指定爲public。這在Java6中是正常的,但它似乎不再允許在Java 8中使用。

ITCN_Runner.class是否已被源構建器聲明爲公共?或者我在這裏犯了一個錯誤。我該如何解決這個問題。

歡迎任何建議或解決辦法。

回答

0

我發佈了一個非常理想的解決方法,我想出了上述問題。因此,而不是建立一個ITCN_Runner,我已刪除以下行

var runner = new ITCN_Runner(imp, 
24, /* width*/ 
12, /* minimum distance */ 
0.5, /* threshold */ 
false, /* detect dark peaks */ 
null /* mask ImagePlus */) 

,並運行命令代替他們開始ITCN插件本身

IJ.run("ITCN ", "") 

    new WaitForUserDialog("Get the results from ITCN", 
     "Please press OK when done with ITCN.").show(); 

的WaitForUserDialog等待我去手動生成結果窗口,退出插件並將結果寫入到csv中,如下所示。

//////Time Delay function////// 
    var tp = IJ.getTextPanel(); 
     while (tp.getLineCount() < 2) { 
      IJ.wait(500); 
      } 
////Parsing Results/// 
    //var fileName = tp.getLine(0); 
    var DAPI = tp.getLine(1); 
    tp.clear(); 

任何建議,以改善這將是一個很大的幫助。

謝謝 lune3141

相關問題