JFrame не отображается, если исходный вызывающий - это сервлет, работающий на Tomcat, который работает как служба Windows.
Apache Tomcat 5 настроен для работы в качестве службы Windows.Сервлет, который работает на этом сервере Tomcat, вызывает пакетный файл script.bat
.Этот пакетный файл выполняет JAR с классом MyClass.java
, который создает JFrame.
Однако JFrame отображается при вызове следующими способами:
- непосредственно из командной строки
- при нормальной загрузке Tomcat, а не в качестве службы Windows
Код, используемый в сервлете для вызова script.bat:
Runtime.getRuntime().exec("cmd.exe /C start /path/to/script.bat");
Содержимое скрипта.bat
@echo on
SET CP=.;path/to/some.jar
java -cp %CP% com.package.MyClass %1
Содержимое MyClass.java
public class MyClass {
public void showFrame() {
JFrame frame = new JFrame("My JFrame");
// ...
frame.setSize(360, 150);
frame.setVisible(true);
}
public static void main (String[] args) {
new MyClass().showFrame();
}
}
Java-версия: 1.5.0_11-b03 (32 бита)
Версия Tomcat: 5.5 (32 бита)