ошибка компиляции с помощью ant и custom build.xml, но работа в netbeans - PullRequest
0 голосов
/ 27 сентября 2019

У меня здесь странная проблема, я не могу обернуться.Код выглядит следующим образом: это действительно заглушка, ничего не произойдет, но она настолько же минимальна, насколько необходимо для иллюстрации проблемы:

package playground;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MenuDetectEvent;
import org.eclipse.swt.events.MenuDetectListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

/**
 *
 * @author k
 */
public class ButtonTest {
    public static void main(String[] args) {
        Display d = new Display();
        Shell s = new Shell(d);
        Button b = new Button(s, SWT.PUSH);

        b.addSelectionListener(new SelectionListener() {
            @Override
            public void widgetSelected(SelectionEvent se) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public void widgetDefaultSelected(SelectionEvent se) {
                throw new UnsupportedOperationException("Not supported yet.");
            }
        });

        b.addMenuDetectListener(new MenuDetectListener() {
            @Override
            public void menuDetected(MenuDetectEvent mde) {
                throw new UnsupportedOperationException("Not supported yet."); 
            }
        });
    }
}

Код работает в NetBeans, сборка - OK.Однако при использовании ant с пользовательским build.xml сборка завершается неудачно, что приводит к невозможности найти символ b.Мой файл сборки

<project name="Test" default="compile" basedir=".">
        <target name="compile">
                <mkdir dir="build" />
                <javac srcdir="src" destdir="build" debug="on">
                        <classpath>
                                <fileset dir="/home/k/lab/ccagent/lib">
                                        <include name="*.jar" />
                                </fileset>
                        </classpath>
                </javac>
        </target>
</project>

И вызов ant приводит к

Buildfile: /home/k/NetBeansProjects/Playground/build.xml

compile:
    [javac] /home/k/NetBeansProjects/Playground/build.xml:4: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 5 source files to /home/k/NetBeansProjects/Playground/build
    [javac] /home/k/NetBeansProjects/Playground/src/playground/ButtonTest.java:34: error: cannot find symbol
    [javac]             b.addMenuDetectListener(new MenuDetectListener() {
    [javac]              ^
    [javac]   symbol:   method addMenuDetectListener(<anonymous MenuDetectListener>)
    [javac]   location: variable b of type Button
    [javac] 1 error

BUILD FAILED

Что меня действительно озадачивает, так это то, что ошибка происходит на b.addMenuDetectListener(…), но не на b.addSelectionListener(…).Поскольку Netbeans компилирует и запускает код без жалоб, мне интересно, что-то в build.xml не так?Вызов ant с build.xml, созданным netbeans, также компилируется без ошибок.

Итак, здесь есть два вопроса:

  • почему компилятор жалуется на b.addMenuDetectListener, но нев b.addSelectionListener?
  • почему мой build.xml выходит из строя, а у Netbean нет?

1 Ответ

0 голосов
/ 27 сентября 2019

@ roberts hint решал проблему: в каталоге lib, указанном в build.xml, была старая версия swt.В то время как netbeans, кажется, включает определенную версию, путь, указанный в моем build.xml, привел к загрузке первой найденной версии swt, которая была 3.1, и эта версия не обеспечивает addMenuDetectListener.

Так что неb был виновником, но .addMenuDetectListener отсутствовал в старой версии SWT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...