java jnlp 运行_无法使用Java WebStart在JNLP中启动Spring启动

Question edited. 我和 spring 启动生命周期有点关系和保护域明显,但我真的不知道如何解决它 . 当使用 java -jar Test.jar 作为独立应用程序运行时,JAR运行完美 .

Exception from Java WebStart console:

Unable to determine code source archive from \\localhost:8080\jnlp\Test.jar

org.springframework.boot.loader.Launcher.createArchive(Launcher.java:151)

at org.springframework.boot.loader.PropertiesLauncher.(PropertiesLauncher.java:149)

at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:607)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at com.sun.javaws.Launcher.executeApplication(Unknown Source)

at com.sun.javaws.Launcher.executeMainClass(Unknown Source)

at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)

at com.sun.javaws.Launcher.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

The exception occurs in Launcher.java (spring-boot-tools):

protected final Archive createArchive() throws Exception {

ProtectionDomain protectionDomain = getClass().getProtectionDomain();

CodeSource codeSource = protectionDomain.getCodeSource();

URI location = (codeSource == null ? null : codeSource.getLocation().toURI());

String path = (location == null ? null : location.getSchemeSpecificPart());

if (path == null) {

throw new IllegalStateException("Unable to determine code source archive");

}

File root = new File(path);

if (!root.exists()) {

throw new IllegalStateException(

"Unable to determine code source archive from " + root);

}

return (root.isDirectory() ? new ExplodedArchive(root)

: new JarFileArchive(root));

}

Spring引导无法获取执行的spring引导jar的绝对路径 - 它只传递一种格式的URI,在我的case \ localhost:8080 \ jnlp \ Test.jar中,通常 location 指向的绝对URI文件 . 因此,Spring Boot无法在Java WebStart中初始化 .

My JNLP:

TEST

Testing Testing

任何提示如何在不修复spring boot库的情况下推送 Launcher.java 中的绝对文件路径?

UPDATE: 我发现这不能很容易解决... Spring启动根本不支持从非文件(或非servlet)位置运行,因为它适用于自定义类加载器 . 此外, path 变量应该与执行的jar相同,因此无法将引导指向新下载的文件(实际上是相同的jar) . :(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值