Posted by
Dominic Waithe on
Jul 17, 2014; 9:31am
URL: http://imagej.273.s1.nabble.com/Java-compilation-invalid-directory-tp5008792.html
Hi,
I think I have a bug.
I am writing java plugin am converting them to Java which is easy. My problem is that when I try and compile the Java code using the script editor I get the following error:
javax.script.ScriptException: Class GP_PlugIn in invalid directory: /Users/dwaithe/Documents/collaborators/SezginE/bin/GP_Plugin.java
at org.scijava.plugins.scripting.java.JavaEngine.getMavenProject(JavaEngine.java:369)
at org.scijava.plugins.scripting.java.JavaEngine.access$600(JavaEngine.java:94)
at org.scijava.plugins.scripting.java.JavaEngine$Builder.<init>(JavaEngine.java:324)
at org.scijava.plugins.scripting.java.JavaEngine$Builder.<init>(JavaEngine.java:267)
at org.scijava.plugins.scripting.java.JavaEngine.eval(JavaEngine.java:149)
at org.scijava.script.ScriptModule.run(ScriptModule.java:172)
at org.scijava.module.ModuleRunner.run(ModuleRunner.java:167)
at org.scijava.module.ModuleRunner.call(ModuleRunner.java:126)
at org.scijava.module.ModuleRunner.call(ModuleRunner.java:65)
at org.scijava.thread.DefaultThreadService$2.call(DefaultThreadService.java:164)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
When I take a template script and save it to the same location it compiles:
Started Bare_PlugIn.java at Thu Jul 17 10:26:24 BST 2014
Compiling 1 file in /var/folders/_6/zby9xbls1d15wqlkpgv9k3280000gn/T/java6346724649962674232
I am using latest Fiji. Please can you help me work this out.
Best,
Dominic
p.s.
Here is the script:
import ij.plugin.PlugIn;
import ij.plugin.PlugIn;
import ij.*;
import ij.ImagePlus.*;
import ij.gui.*;
import ij.measure.*;
import ij.plugin.*;
import ij.plugin.frame.*;
import ij.process.*;
import javax.swing.*;
import java.awt.*;
/**
* This is a template for a plugin that does not require one image
* (be it that it does not require any, or that it lets the user
* choose more than one image in a dialog).
*/
public class GP_PlugIn implements PlugIn {
/**
* This method gets called by ImageJ / Fiji.
*
* @param arg can be specified in plugins.config
* @see ij.plugin.PlugIn#run(java.lang.String)
*/
JFrame frame;
JPanel superPanel;
JComboBox menu1, menu2;
JCheckBox checkBox;
GridBagConstraints c;
JButton calculateBtn, editBtn;
JSpinner noiseTol, thresholdText,wavelengthHighJS,wavelengthLowJS;
ImagePlus imp;
int nbImg =0;
String[] fileList ={};
private static int wavelengthHigh = 1;
private static int wavelengthLow = 2;
private static String[] fitStrings = { "Gaussian", "Gamma Variate"};
public void getParam(){
imp = WindowManager.getImage("blobs.gif");
}
public void reloadList(){
menu1.removeAllItems();
nbImg=0;
int selectA=menu1.getSelectedIndex();
if (WindowManager.getImageCount()!=0){
int[] IDList=WindowManager.getIDList();
for (int i=0;i<IDList.length;i++){
ImagePlus currImg=WindowManager.getImage(IDList[i]);
if (currImg.getBitDepth()!=24 && currImg.getBitDepth()!=32){
nbImg++;
item = currImg.getTitle();
menu1.addItem(item);
}
}
}
}
public void addImgToList(ImagePlus img){
int min=65535, max=0;
for (int i=1; i<=img.getNSlices(); i++){
img.setSlice(i);
min=Math.min(min, (int) img.getStatistics().min);
max=Math.max(max, (int) img.getStatistics().max);
}
info.addElement(new ImgInfo(img.getTitle(), min, max, img.getProcessor().getAutoThreshold()));
}
public void GUI(){
/**Loads the main GUI interface **/
frame = new JFrame("Channels");
superPanel = new JPanel(new GridBagLayout());
frame.add(superPanel);
frame.setSize(400,585);
c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 1;c.gridy = 1;
menu1= new JComboBox(fileList);
superPanel.add(new JLabel("input Stack: "),c);
c.gridx = 2;c.gridy = 1;
superPanel.add(menu1,c);
menu2=new JComboBox(fitStrings);
c.gridx = 1;c.gridy = 2;
superPanel.add(new JLabel("Model to fit: "),c);
c.gridx = 2;c.gridy = 2;
superPanel.add(menu2,c);
c.gridx = 1;c.gridy = 3;
superPanel.add(new JLabel("Remove Background: "),c);
c.gridx = 2;c.gridy = 3;
checkBox = new JCheckBox();
superPanel.add(checkBox,c);
c.gridx = 2;c.gridy = 4;
editBtn = new JButton("Edit wavelengths");
//editBtn.addActionListener(openWavelengthBox());
superPanel.add(editBtn,c);
c.gridx =1;c.gridy =5;
superPanel.add(new JLabel("sample wavelength low"),c);
c.gridx =2;
wavelengthLowJS = new JSpinner(new SpinnerNumberModel(1,0,1,1));
superPanel.add(wavelengthLowJS,c);
c.gridx =1;c.gridy =6;
superPanel.add(new JLabel("sample wavelength high"),c);
c.gridx =2;
wavelengthHighJS = new JSpinner(new SpinnerNumberModel(1,0,1,1));
superPanel.add(wavelengthHighJS,c);
c.gridx =1;c.gridy =7;
superPanel.add(new JLabel("threshold (0-255)"),c);
c.gridx =2;
thresholdText = new JSpinner(new SpinnerNumberModel(41,0,255,1));
superPanel.add(thresholdText,c);
c.gridx =1;c.gridy =8;
superPanel.add(new JLabel("Noise tolerance (0-1.0)"),c);
c.gridx =2;
noiseTol = new JSpinner(new SpinnerNumberModel(0.8,0.0,1.0,0.05));
superPanel.add(noiseTol,c);
calculateBtn = new JButton("calculate");
//calculateBtn.addActionListener(processImg());
c.gridx = 2;c.gridy = 9;
superPanel.add(calculateBtn,c);
c.gridy =10;
frame.setVisible(true);
}
@Override
public void run(String arg) {
GUI();
reloadList();
}
}
Wolfson Imaging Centre.
Weatherall Institute of Molecular Medicine.
University of Oxford,
Oxford, OX3 9DS
--
ImageJ mailing list:
http://imagej.nih.gov/ij/list.html