带有 Sparks Framework 的 Jar 仅适用于控制台而不是双击

Jar with Sparks Framework only works right with console not with double click

结构是

www 是一个包含 Spark 更改文件的文件夹,所以我使用

externalStaticFileLocation("www");

当我 运行

java -jar program.jar

http://localhost:8080/index.html 有效

当我双击启动 jar 时

未找到urlreturn404。

谁能帮帮我?

谢谢

我通常使用绝对路径 externalStaticFileLocation

编辑

我还有一个应用程序,出于开发目的,我在其中获取了执行 jar 的路径。对于您来说,我认为一个不错的解决方案是:

声明一个字符串,在我的应用程序中它是一个常量

    public static final String STATIC_FILES_LOCATION_DEV;

创建File实例并获取当前目录,然后拼接www目录

    File f = new File("");
    STATIC_FILES_LOCATION_DEV = f.getAbsolutePath()
            + "/../www";

将其用作您的资源目录:

    externalStaticFileLocation(STATIC_FILES_LOCATION_DEV);

就是这样。

我的答案是这样的

    private static String getWWWDir() {
       String dir = new File("").getAbsolutePath() + "/www";
       File file = new File(dir);

       if(file.exists() && file.isDirectory()) {
           return file.getAbsolutePath();
       }
       else
       {
           String tmpDir = API.class.getProtectionDomain().getCodeSource().getLocation().getFile();
           file = new File(tmpDir);
           dir = file.getParent() + "/www";
           file = new File(dir);
           if(file.exists() && file.isDirectory()) {
               return file.getAbsolutePath();
           }
       }
       return null;
   }

我知道它不漂亮,但它适合我。

感谢你们的帮助