Java 带有Sparks框架的Jar只适用于控制台,而不适用于双击
结构是Java 带有Sparks框架的Jar只适用于控制台,而不适用于双击,java,jar,spark-java,Java,Jar,Spark Java,结构是 program.jar www(文件夹) www是一个为Spark更改文件的文件夹,所以我使用 externalStaticFileLocation("www"); 当我跑的时候 java -jar program.jar 工作 当我双击启动罐子时 找不到url返回404 有人能帮我吗 谢谢我通常将绝对路径与externalStaticFileLocation 编辑 我还有一个应用程序,出于开发目的,我在其中获得了执行jar的路径。对你来说,我认为一个很好的解决方案是: 声明一个
- program.jar
- www(文件夹)
externalStaticFileLocation("www");
当我跑的时候
java -jar program.jar
工作
当我双击启动罐子时
找不到url返回404
有人能帮我吗
谢谢我通常将绝对路径与
externalStaticFileLocation
编辑
我还有一个应用程序,出于开发目的,我在其中获得了执行jar的路径。对你来说,我认为一个很好的解决方案是:
声明一个字符串,在我的应用程序中它是一个常量
public static final String STATIC_FILES_LOCATION_DEV;
创建一个文件实例并获取当前目录,然后连接www
目录
File f = new File("");
STATIC_FILES_LOCATION_DEV = f.getAbsolutePath()
+ "/../www";
将其用作您的资源目录:
externalStaticFileLocation(STATIC_FILES_LOCATION_DEV);
就是这样。我通常使用绝对路径和
externalStaticFileLocation
编辑
我还有一个应用程序,出于开发目的,我在其中获得了执行jar的路径。对你来说,我认为一个很好的解决方案是:
声明一个字符串,在我的应用程序中它是一个常量
public static final String STATIC_FILES_LOCATION_DEV;
创建一个文件实例并获取当前目录,然后连接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;
}
我知道它不漂亮,但对我来说很有用
谢谢你们的帮助我的答案是
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;
}
我知道它不漂亮,但对我来说很有用
感谢你们的帮助但是我怎么知道用户的jar文件在哪里?如果使用jar运行的路径,我将无法再调试项目,因为在项目中有一个目标文件夹,而在jar中没有目标文件夹。导出jar时,所有web资产(html、css、js文件)都在jar中吗?请使用winzip打开您的jar进行检查。否jar中没有web资产。www是与jar位于同一目录中的外部文件夹。由于该工具将html文件下载到www中,因此我无法在JAR中使用它们,因此我认为您有两种选择:将web资产放在类路径中,然后开始使用
staticFileLocation
,或者在运行网站的机器上标准化www文件夹的路径,并在externalStaticFileLocation
。我已经给出了答案,看一看!但是我怎么知道用户的jar文件在哪里呢?如果使用jar运行的路径,我将无法再调试项目,因为在项目中有一个目标文件夹,而在jar中没有目标文件夹。导出jar时,所有web资产(html、css、js文件)都在jar中吗?请使用winzip打开您的jar进行检查。否jar中没有web资产。www是与jar位于同一目录中的外部文件夹。由于该工具将html文件下载到www中,因此我无法在JAR中使用它们,因此我认为您有两种选择:将web资产放在类路径中,然后开始使用staticFileLocation
,或者在运行网站的机器上标准化www文件夹的路径,并在externalStaticFileLocation
。我已经给出了答案,看一看!从cmd行执行和双击执行时,工作目录似乎不同。您是否尝试将其输出到某个日志中,并查看是否有差异?工作目录似乎与目录中的jar相匹配。在这两种情况下,我启动jar时双击路径是我在linux下的主目录。。。这真的很奇怪,当您从cmd行执行和使用双击执行时,工作目录看起来是不同的。您是否尝试将其输出到某个日志中,并查看是否有差异?工作目录似乎与目录中的jar相匹配。在这两种情况下,我启动jar时双击路径是我在linux下的主目录。。。真奇怪