首页 > 解决方案 > JFrame 不可见

问题描述

当初始调用者是在 Tomcat 上运行的作为 Windows 服务运行的 servlet 时,JFrame 不可见。

Apache Tomcat 5 配置为作为 Windows 服务运行。在这个 Tomcat 服务器上运行的 servlet 调用批处理文件script.bat。此批处理文件执行具有MyClass.java创建 JFrame 的类的 JAR。

但是,当以下列方式调用时,JFrame 是可见的:

Servlet 中用于调用 script.bat 的代码:

Runtime.getRuntime().exec("cmd.exe /C start /path/to/script.bat");

script.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 位)

标签: javabatch-filetomcatjframewindows-services

解决方案


推荐阅读