【发布时间】:2013-03-27 12:12:35
【问题描述】:
JFileChooser chooser = new JFileChooser();
JDialog dialog=new JDialog();
dialog.setAlwaysOnTop(true);
/*System.out.println("is always on top?"+dialog.isAlwaysOnTop());*/
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = chooser.showOpenDialog(dialog);
String path = null;
if(returnVal == JFileChooser.APPROVE_OPTION) {
path=chooser.getSelectedFile().getAbsolutePath();
}
我已经在 Servlet 的 doGet 方法中编写了这段代码。当我部署在 linux 服务器中时出现以下异常:
java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
有人知道如何克服吗?
【问题讨论】:
-
您预计会发生什么? servlet 容器没有图形用户界面,它应该如何显示
JFileChooser? -
当 doGet 执行时,必须出现一个弹出窗口(JDialog)来选择目录,然后我正在检索字符串中选择的目录。清楚吗?但它在 JDialog dialog=new JDialog(); 处给出了 Headless 异常。
-
由于 servlet 容器没有图形用户界面,它无法显示
JDialog。它通过抛出HeadlessException告诉你。 servlet 通常只处理一个 HTTP 请求,它依赖于服务器端的任何用户干预。阅读 Wikipedia 或 this article 了解有关 servlet 工作原理的更多信息。 -
那有什么解决办法呢?我可以使用 javascript 获取目录路径(由用户选择)吗?
-
在尝试在服务器上运行基于 GUI 的应用程序 docs.oracle.com/javase/6/docs/api/java/awt/…
标签: java