У меня здесь странная проблема, я не могу обернуться.Код выглядит следующим образом: это действительно заглушка, ничего не произойдет, но она настолько же минимальна, насколько необходимо для иллюстрации проблемы:
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 нет?