【问题标题】:jar file load html pages in JEditorPanejar 文件在 JEditorPane 中加载 html 页面
【发布时间】:2013-11-04 09:47:24
【问题描述】:

我正在尝试将存储在 jar 文件中的 html 页面加载到帮助 JEditorPane 中。到目前为止,当我在 Eclipse 中运行它时它可以工作,但是当我制作一个可运行的 jar 时它不会工作,除非我将地图 res/pages/... 与 jar 文件放在同一个地图中

class HelpButtonHandler implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent arg0) {
             infodex = new JEditorPane();
                helpDialog = new JDialog();


            URL url1 = null;
            try {
                url1 = (new java.io.File("res/pages/help.html")).toURI().toURL();
            } catch (MalformedURLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }


            try {
                infodex.setPage(url1);
            } catch (IOException e) {
                e.printStackTrace();
            }


            helpDialog.getContentPane().add(new JScrollPane(infodex));
            helpDialog.setBounds(400,200,700,600);
            helpDialog.show();
            infodex.setEditable(false);
            Hyperactive hyper = new Hyperactive();
            infodex.addHyperlinkListener(hyper);


        }


    }

【问题讨论】:

标签: java swing jar executable-jar


【解决方案1】:

打包在 .jar 中的文件不是文件系统上的文件。您无法使用 File 类访问它。

.jar 中的文件称为应用程序资源。您可以使用Class.getResource 方法访问它:

url1 = HelpButtonHandler.class.getResource("/res/pages/help.html");

由您来确保文件正确打包在您的 .jar 中。如果url1 为空,请检查 .jar 文件的结构。

【讨论】:

    【解决方案2】:

    当您将资源放入 jar 中时,您无法使用 File 访问它们。您需要通过(更准确地说:a)类加载器将它们作为资源访问。例如:

    HelpButtonHandler.class.getResource("/res/pages/help.html");
    

    确保您将资源放在正确的位置:如果您遗漏了第一个斜线 ('/'),类加载器将尝试相对于您的类来定位它(这通常不是您想要的)。

    【讨论】:

      【解决方案3】:

      使用 gerResource() 方法...

      url = getClass().getClassLoader().getResource("res/pages/help.html");
      

      查看此链接

      http://oakgreen.blogspot.com/2011/12/java-getclassgetclassloadergetresourcem.html

      【讨论】:

        猜你喜欢
        • 2013-02-09
        • 2017-07-23
        • 1970-01-01
        • 1970-01-01
        • 2019-11-11
        • 2012-10-26
        • 1970-01-01
        • 2015-08-07
        • 2014-09-26
        相关资源
        最近更新 更多