JavaFX只需将它们拖出浏览器即可提供Drag-to-Install功能 - 然后您可以直接从桌面重新启动应用程序.与JNLP有何不同?或者在通过网络分发内容方面,它对JNLP有多容易或有利?
我希望能够使用javascript调用我的JNLP类的函数.让我们假设在我的applet中我有一个像这样定义的函数:public String returnSomething(){ return "bla"; }
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- ########################## IMPORTANT NOTE ############################ -->
<!-- This preview HTML page will work only with JDK 6 update 10 and higher! -->
<!-- ###################################################################### -->
<html>
<head>
<title>Test page for launching the applet via JNLP</title>
</head>
<body>
<h3>Test page for launching the applet via JNLP</h3>
<script src="http://java.com/js/deployJava.js"></script>
<script>
var attributes = {
code: "winToJnaApi.NewApplet",
archive: "JavaApplication6.jar, lib/jna.jar, lib/platform.jar",
width: 300,
height: 300,
name: "applet",
id: "app" …Run Code Online (Sandbox Code Playgroud) 我无法在任何给定时间运行多个java webstart实例.
例如,我无法同时运行应用程序的生产和QA实例,这两个实例都是通过java webstart启动的.此外,我无法与我的应用程序的生产或QA实例同时运行java webstart缓存查看器.
我很但是能够运行,当他们在彼此隔离运行任何上述三个Webstart的启动的.当我尝试提出第二个选项时,我看到"Java Loading ..."屏幕然后消失,没有任何反应.
另外,我试图删除webstart缓存(通过java webstart缓存查看器),无论我指向哪个JRE,我都会收到以下错误:
"安装错误.调用Java VM(execv)时出错"javaw.exe的路径'"
我希望上面提到的两个问题都是相互关联的.我不相信我最近改变了任何配置,我很高兴运行java webstart多年.
有没有人见过这样的问题?
谢谢,杰克
编辑:当第二个webstart实例尝试运行时,在显示"Java Loading ..."屏幕期间,我可以在任务管理器中看到生成了一个新的javaw.exe进程.这个过程几乎立刻就死了.我不确定如何检查该过程中的失败,但我希望它类似于尝试通过webstart缓存查看器清除缓存时的失败.
我有一个程序,我一直在写,使用WebStart,我似乎遇到了一个问题.我注意到无论我做什么,我都无法让WebStart下载特定于操作系统的jar.
您将在下面看到我的JNLP文件.你看看你会注意到的资源我有一些独立于操作系统和架构的jar,然后我有一些依赖于操作系统的jar和nativelibs.
目前核心和通用文件夹中的所有内容都将正确加载,但没有其他功能.如果我做一个链接需要我的电脑会下载和加载就好了一切单独的JNLP文件(也有少数打嗝搞清楚).
这是我的JNLP文件,你看到可能出错了吗?
<?xml version='1.0' encoding='utf-8' ?>
<jnlp
spec="1.0+"
codebase="http://xxxx.xxxxxxxxxxxxxxxx.xxx/java/"
href="MyApp.jnlp?k=14&d=dGMDES%2Bgs0A3d03HbVKkD4T7ONIby1a5NZGMVkwHzsV7tydBs2eoPvyHfeXlNpcxD8H8Wt1kRePtxBuOswZ%2FxA%3D%3D">
<information>
<title>Program Name</title>
<vendor>Company</vendor>
<description></description>
<description kind="short"</description>
</information>
<update check="always" policy="always" />
<resources>
<j2se version="1.7+" href="http://java.sun.com/products/autodl/j2se" />
<property name="sun.awt.disableMixing" value="false"/>
<jar href="core/Utilities.jar" size="146289" main="false" download="lazy" />
<jar href="core/DPFP.jar" size="40239" main="false" download="lazy" />
<jar href="core/SigPad.jar" size="8293" main="false" download="lazy" />
<jar href="core/SoapService.jar" size="741035" main="false" download="lazy" />
<jar href="core/Marketing.jar" size="857781" main="false" download="lazy" />
<jar href="core/App.jar" size="1172429" main="true" download="eager" />
<jar href="core/Element.jar" size="506791" main="false" download="lazy" />
<jar href="universal/ekitspell.jar" size="330488" main="false" download="lazy" /> …Run Code Online (Sandbox Code Playgroud) 我可以从 Finder 窗口双击我的应用程序,但我无法从终端找出相同的命令,以便我可以创建别名。
我正在 Kubernetes 上运行 Jenkins,并使用动态从属 pod 配置设置。
它曾经运行良好很长时间,但不知何故从昨天开始出现这个问题。
这是我从 slave pod 获取的日志
Warning: SECRET is defined twice in command-line arguments and the environment variable
Warning: AGENT_NAME is defined twice in command-line arguments and the environment variable
Jun 26, 2021 10:48:16 AM hudson.remoting.jnlp.Main createEngine
INFO: Setting up agent: default-jxrsk
Jun 26, 2021 10:48:16 AM hudson.remoting.jnlp.Main$CuiListener <init>
INFO: Jenkins agent is running in headless mode.
Jun 26, 2021 10:48:16 AM hudson.remoting.Engine startEngine
INFO: Using Remoting version: 3.40
Jun 26, 2021 10:48:16 AM org.jenkinsci.remoting.engine.WorkDirManager …Run Code Online (Sandbox Code Playgroud) 在JNLP文件中,是与任何元数据(例如清单)相关的jar资源的版本属性,还是由创建JNLP文件的用户任意设置?
我刚刚实现了一个Java Web Start应用程序,我在编程过程中发现了一个问题:
如果我分发版本并使用JNLP文件下载它,我不能让系统再次下载文件,除非我添加/删除文件或从Java缓存中清除任务.这意味着如果我只修改文件,系统将不会下载新文件:它只会使用旧文件.
我知道我可能只是禁止系统缓存文件,但是有更好的方法可以更优雅地解决这个问题吗?
我还从官方指南中注意到这一点:
If offline-allowed is specified, Java Web Start will also check to see if an update is available. However, if the application is already downloaded the check will timeout after a few seconds, in which case the cached application will be launched instead. Given a reasonable fast server connection, the lastest version of the application will usually be run, but it is not guaranteed. The application, however, can be run offline.
这是否意味着如果网络速度慢,在实践中将不会经常运行最新版本的情况?也就是说,"合理快速"的速度有多快?
感谢所有的投入!
我尝试启动的Jar文件与JNLP文件位于同一目录中.如何在我的codebase属性中指定?
<jnlp codebase="file://" href="launch.jnlp" spec="1.0+">
Run Code Online (Sandbox Code Playgroud) 我有一个java web start应用程序,我需要从jnlp文件中禁用字节码验证.
这可以通过设置JAVAWS_VM_ARGS ="- noverify "或设置-Xverify:none来轻松完成,但此处的文档说web start不支持在jnlp文件中添加这些参数.
我试过这个:
<j2se version="1.6+" java-vm-args="-noverify -showversion -verbose" >
在资源标签下,它跳过-noverify并接受另外两个.
任何帮助表示赞赏.
我正在运行OS X 10.7.5,我已经安装了Java 6和Java 7.我有一个bash shell设置来运行Java 6但是当我启动一个JNLP文件时,我看到了Java 7启动画面,在Java控制台中,我看到了
Java Web Start 10.25.2.15
Using JRE version 1.7.0_25-b15 Java HotSpot(TM) 64-Bit Server VM
Run Code Online (Sandbox Code Playgroud)
即使我使用javaws的完整路径,也会发生这种情况
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javaws foo.jnlp
Run Code Online (Sandbox Code Playgroud)
只是为了验证这表明shell正在使用Java 6:
$ echo $JAVA_HOME
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
$ type -all javaws
javaws is /usr/bin/javaws
$ ls -l /usr/bin/javaws
lrwxr-xr-x 1 root wheel 76 Nov 20 10:13 /usr/bin/javaws -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javaws*
$ type -all java
java is /usr/bin/java
$ ls -l /usr/bin/java
lrwxr-xr-x 1 root wheel 74 Nov 20 10:13 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java*
$ java -fullversion
java full version …Run Code Online (Sandbox Code Playgroud) 我一直在寻找解决这个问题的答案,找不到任何东西,所以只需将答案发给别人.
如果您尝试打开JAVA桌面应用程序并获取"BadFieldException [必须为nativelib或installer-desc支持启用缓存,http"异常.
以下代码(通过JNLP API检索Java Web Start客户端应用程序的基本URL)在Java 8中工作,但在(模块化)Java 9运行时中执行时失败:
Class<?> mclass = Class.forName("javax.jnlp.ServiceManager");
Method lookup = mclass.getMethod("lookup", new Class[]{String.class});
Object basicSvc = lookup.invoke(null, new Object[{"javax.jnlp.BasicService"});
Class<?> sclass = basicSvc.getClass();
Method getCodeBase = sclass.getMethod("getCodeBase", (Class[])null);
URL codebase = (URL)getCodeBase.invoke(basicSvc, (Object[])null); // throws
Run Code Online (Sandbox Code Playgroud)
结果是
java.lang.IllegalAccessException: class app.App cannot access class
com.sun.jnlp.BasicServiceImpl (in module jdk.javaws) because module
jdk.javaws does not export com.sun.jnlp to unnamed module @7202a0fa
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException
at java.base/java.lang.reflect.AccessibleObject.checkAccess
at java.base/java.lang.reflect.Method.invoke
at app.App.init
Run Code Online (Sandbox Code Playgroud)
怎么解决这个问题?
jnlp ×13
java ×11
applet ×1
classloader ×1
jar ×1
java-9 ×1
java-platform-module-system ×1
javafx ×1
javascript ×1
jenkins ×1
kubernetes ×1
macos ×1
reflection ×1
swing ×1
terminal ×1
version ×1