Java не может найти символ: метод getFiles()

Я пытаюсь использовать java.awt.FileDialog в плагине ImageJ, но по какой-то причине я получаю сообщение об ошибке, что Java не может найти метод getFiles:

C:\File_Opener3.java:50: не удается найти символ symbol: метод getFiles() расположение: класс java.awt.FileDialog fd.getFiles(); ^ 1 ошибка

Я получаю аналогичную ошибку при попытке setMultipleMode, но другие методы, такие как setVisible и getFile, работают нормально. Может ли кто-нибудь сказать мне, что я делаю неправильно?

import ij.plugin.*;
import ij.*;
import ij.io.*;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.*;

import ij.gui.*;
import ij.plugin.frame.Recorder;
import ij.util.Java2;
import ij.macro.Interpreter;
import java.awt.*;

import java.awt.FileDialog;
import java.awt.Frame;

// Try to figure out why this only allows list veiw
public class File_Opener3  implements PlugIn {
    //static File dir;

    private static Frame sharedFrame;
    private String dir;
        private String name;

    public void run(String arg) {
        openFiles();
        IJ.register( File_Opener .class);
    }

    public void openFiles() {
        Frame parent = IJ.getInstance();
        if (parent==null) {
            if (sharedFrame==null) sharedFrame = new Frame();
                parent = sharedFrame;
            }
        FileDialog fd = new FileDialog(parent, "title"); // From Java.awt.FileDialog
        fd.setVisible(true);
        //fd.setMultipleMode(true);
        name = fd.getFile();
            if (name==null) {
                if (IJ.isMacOSX())
                    System.setProperty("apple.awt.fileDialogForDirectories", "false");
                Macro.abort();
            } else
                dir = fd.getDirectory();


        //File[] files = fd.getFiles();
        fd.getFiles();
        //IJ.log("48 fd.getFilenameFilter(): "+fd.getFilenameFilter());
        Opener opener = new Opener();
        //opener.openMultiple();
/*      for (int i=0; i<files.length; i++) {
            ImagePlus img = opener.openImage(path, files[i].getName());
            if (img!=null)
                img.show();
        }    */    
    }

}

person user1639187    schedule 01.05.2015    source источник


Ответы (1)


FileDialog.getFiles() и FileDialog.setMultipleMode() были представлены в Java 1.7. Вероятно, вы компилируете более раннюю версию Java. Если вы используете IDE, проверьте исходный уровень, установленный для вашего проекта.

person Ted Hopp    schedule 01.05.2015
comment
К сожалению, вы правы, в моем About ImageJ написано Java 1.6.0, хотя у меня установлена ​​1.8. - person user1639187; 01.05.2015
comment
@user1639187 — Возможно, эти часто задаваемые вопросы помогут. (Или, возможно, нет. Я ничего не знаю об ImageJ.) - person Ted Hopp; 01.05.2015
comment
Спасибо, Тед, я просто пытался это сделать, и теперь файл класса имеет неправильную версию 52.0, при компиляции должно быть 50.0. - person user1639187; 01.05.2015
comment
@ user1639187 К сожалению, редактор сценариев ImageJ не работает с Java 7+. Это известная проблема, которую мы планируем решить до конца лета. Но в редакторе сценариев есть и другие критические ошибки, связанные с разработкой плагинов Java. Я предлагаю использовать IDE для разработки ваших плагинов; в частности, я искренне рекомендую Eclipse. См. это руководство и используйте minimal-ij1-plugin в качестве отправной точки. - person ctrueden; 03.05.2015