Java Web Start 控制台消失

标签 java jnlp java-web-start

我是 Java Web Start 的新手。我有一个使用 CORBA 作为中间件的示例客户端-服务器应用程序。前端(客户端)使用 Java 语言,后端(服务器)使用 C++ 语言。该应用程序使用 jar 和批处理文件运行和测试。现在我想在 Java Web Start 和 JNLP 中部署该应用程序。 我通过创建 JNLP 文件和签名 jar 进行了相同的配置。

众所周知,任何 CORBA 应用程序都需要一个域文件 ( .cfg ) 和一些 org.omg 类来通过 RPC 与服务器进行通信。

我不知道如何在 JNLP 中指定这些域文件名、路径、CORBA 类等。即便如此,我也无法准确理解什么配置可以使 CORBA 应用程序在 Java Web Start 中正常工作,以便它也可以与服务器通信。所有 Orbix jar、IDL Stub jar 均已存在并签名。我提供我的 JNLP 文件作为引用。实际上我已经尝试添加这些域文件和 CORBA 类作为参数。但和往常一样,它不起作用,运行 JNLP 后,Java 控制台突然消失了。

CORBADemo.jnlp

?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://172.28.1.139:8400/Test_CORBA_App" href="CORBADemo.jnlp">
<information>
<title>CORBA Demo</title>
<vendor>Ushacomm</vendor>
</information>

<resources>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="lib_6.3-Signed/UI_Fall_Test63.jar" main="true" download="eager" />
<jar href="lib_6.3-Signed/ConfigurationService.jar" download="eager" />
<jar href="lib_6.3-Signed/IDLStub.jar" download="eager" />
<jar href="lib_6.3-Signed/art-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/art.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_ip-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_ip.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_ip_cio-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_ip_cio.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_ip_nio-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_ip_nio.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_tls-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/atli2_tls.jar" download="eager" />
<jar href="lib_6.3-Signed/codeset.jar" download="eager" />
<jar href="lib_6.3-Signed/concurrency-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/concurrency.jar" download="eager" />
<jar href="lib_6.3-Signed/ifc-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/ifc.jar" download="eager" />
<jar href="lib_6.3-Signed/iiop.jar" download="eager" />
<jar href="lib_6.3-Signed/java_management_logging-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/java_mgmt_plugin-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/java_portable_interceptor-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/management-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/management.jar" download="eager" />
<jar href="lib_6.3-Signed/mgmt.jar" download="eager" />
<jar href="lib_6.3-Signed/omg-rt.jar" download="eager" />
<jar href="lib_6.3-Signed/omg.jar" download="eager" />
<jar href="lib_6.3-Signed/perf_logging.jar" download="eager" />
<jar href="lib_6.3-Signed/portable_interceptor.jar" download="eager" />
<property name="Dorg.omg.CORBA.ORBClass" value="com.iona.corba.art.artimpl.ORBImpl"/>
<property name="Dorg.omg.CORBA.ORBSingletonClass" value="com.iona.corba.art.artimpl.ORBSingleton"/>
<property name="ORBdomain_name" value="VOIAMODOMAINNEW"/>
</resources>

<application-desc name="CORBADemo Demo Application" main-class="Launch" width="300" height="300">
</application-desc>

<update check="background"/>

<argument>1</argument>

<security>
<all-permissions/>
</security>
</jnlp>

<

当我使用批处理文件从 jar 运行应用程序时,我的批处理文件看起来像这样

runJar.bat C:\jdk1.6.0_14\bin\java -Xms64M -Xmx512M -Dorg.omg.CORBA.ORBClass=com.iona.corba.art.artimpl.ORBImpl -Dorg.omg.CORBA.ORBSingletonClass=com.iona.corba。 art.artimpl.ORBSingleton -jar lib_6.3\UI_Fall_Test63.jar -ORBdomain_name VOIAMODOMAINNEW 1

暂停

如您所见,批处理文件中指定了以下内容:

  1. JDK 路径:( C:\jdk1.6.0_14\bin\java )
  2. 最大和最小内存的 Java VM 参数:( -​​Xms64M -Xmx512M )
  3. ORB 类名称:( -Dorg.omg.CORBA.ORBClass=com.iona.corba.art.artimpl.ORBImpl )
  4. ORB 单例类名称:( -Dorg.omg.CORBA.ORBSingletonClass=com.iona.corba.art.artimpl.ORBSingleton )
  5. 要运行的 Jar 文件名:( -jar lib_6.3\UI_Fall_Test63.jar )
  6. 域名:(-ORBdomain_name VOIAMODOMAINNEW)
  7. 主函数参数:( 1 ) 所有库(Orbix jar 以及其他第三方库)都放置在我的 lib_6.3 文件夹中,如您所见,我在 #Point5 中指定 jar 位置目录是 lib_6.3。类似地,在 web start 中,我已通过“jarsigner”对所有 jar 进行了签名,并将它们放入 lib_6.3_Signed 中(正如您之前在我发布的 JNLP 文件中看到的那样)

index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<script src="http://www.java.com/js/deployJava.js"></script>
<script>
// using JavaScript to get location of JNLP file relative to HTML page
var dir = location.href.substring(0,location.href.lastIndexOf('/')+1);
var url = dir + "CORBADemo.jnlp";
deployJava.createWebStartLaunchButton(url, '1.6.0');
</script>
</BODY>
</HTML>

单击启动按钮后,jnlp 下载到桌面。运行 jnlp 后,Web 启动控制台在特定点消失。 经过调查,我发现在我的应用程序中,它在解析 CORBA 命名服务的引用之前提供打印。我认为,就在尝试解析“NamingService”并执行此代码时,出现了问题。

org.omg.CORBA.Object initNCRef = i_objORB.resolve_initial_references("NameService"); -->“i_objORB”是“org.omg.CORBA.ORB”类型对象。

在 CORBA 应用程序中,我在批处理文件中指定的以下类有助于解析 ORB 的 NamingService。你可以在我之前的帖子中看到批处理文件。 -Dorg.omg.CORBA.ORBClass=com.iona.corba.art.artimpl.ORBImpl

我不明白为什么控制台消失了。即使如此,我也在我的应用程序中给出了 print 来查看堆栈。但控制台在几秒钟内就消失了。我不明白为什么。

最佳答案

如果您有兴趣从消失的窗口捕获文本,您可以启用日志记录。在 Windows 中找到此文件夹:

C:\Users\{username}\AppData\LocalLow\Sun\Java\Deployment\deployment.properties

使用您喜欢的任何目录以这种格式添加这些行:

deployment.log=true
deployment.user.logdir=C\:\\tmp

关于Java Web Start 控制台消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14120580/

相关文章:

java - Android - 无法以编程方式删除 Wifi 网络 - WifiManager 类型中的方法 removeNetwork(int) 不适用于参数(字符串)

java - 如何在 java 中使用 FirebaseListAdapter 从 firebase 数据库中读取子项?

java - 如何获得专门用于启动 JNLP 文件的 jsp 页面创建浏览器弹出窗口?

java - Java WebStart应用程序如何获取访问我的网页的MAC地址

java - 配置JNLP的权限 :

java - 如何立即关闭executorservice中的所有线程?

java - @EnableWebMvc 以数组格式显示日期

Java Web Start - 快捷方式创建不起作用(无法创建快捷方式)

java - 如何避免小程序 "Do you want to run this application?"弹出消息

java - CXF - Webstart 的 ClassCastException (SEIStub/ClientProxy)