当我尝试从Java 1.6(1.6.0_36)在Red Hat Enterprise Linux Server 6.4(Santiago)应用程序中运行JNLP时,我得到:
[wojtek@rcmtex05 ~]$ strace -e open
/opt/tex/lib/java/jdk1.6.0_35/bin/javaws
/tmp/app.jnlp >>
/home/wojtek/6.txt open("/etc/ld.so.cache", O_RDONLY) = 3
open("/usr/lib64/libX11.so.6", O_RDONLY) = 3
open("/lib64/libnsl.so.1", O_RDONLY) = 3 open("/lib64/libc.so.6",
O_RDONLY) = 3 open("/lib64/libdl.so.2", O_RDONLY) = 3
open("/usr/lib64/libxcb.so.1", O_RDONLY) = 3
open("/usr/lib64/libXau.so.6", O_RDONLY) = 3
open("/etc/nsswitch.conf", O_RDONLY) = 3 open("/etc/ld.so.cache",
O_RDONLY) = 3 open("/lib64/libnss_files.so.2", O_RDONLY) = 3
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
open("/home/wojtek/.java/deployment/deployment.properties", O_RDONLY)
= 3 open("/usr/lib/locale/locale-archive", O_RDONLY) = 3 open("/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) = 3
但是当我尝试使用Java 1.7(1.7.0_65-b17)运行相同的应用程序时,结果是不同的:
[wojtek@rcmtex05 ~]$ strace -e open
/opt/tex/lib/java/jdk1.7.0_65/bin/javaws
/tmp/app.jnlp
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/usr/lib64/libX11.so.6", O_RDONLY) = 3
open("/lib64/libnsl.so.1", O_RDONLY) = 3 open("/lib64/libdl.so.2",
O_RDONLY) = 3 open("/lib64/libm.so.6", O_RDONLY) = 3
open("/lib64/libc.so.6", O_RDONLY) = 3
open("/usr/lib64/libxcb.so.1", O_RDONLY) = 3
open("/usr/lib64/libXau.so.6", O_RDONLY) = 3
open("/etc/nsswitch.conf", O_RDONLY) = 3 open("/etc/ld.so.cache",
O_RDONLY) = 3 open("/lib64/libnss_files.so.2", O_RDONLY) = 3
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3 open("/etc/localtime",
O_RDONLY) = 3 open("/etc/ld.so.cache", O_RDONLY) = 3
open("/usr/lib64/libgtk-x11-2.0.so.0", O_RDONLY) = 3
open("/usr/lib64/libgdk-x11-2.0.so.0", O_RDONLY) = 3
open("/usr/lib64/libgdk_pixbuf-2.0.so.0", O_RDONLY) = 3
open("/usr/lib64/libpangocairo-1.0.so.0", O_RDONLY) = 3
open("/usr/lib64/libXfixes.so.3", O_RDONLY) = 3
open("/usr/lib64/libatk-1.0.so.0", O_RDONLY) = 3
open("/usr/lib64/libcairo.so.2", O_RDONLY) = 3
open("/lib64/libgio-2.0.so.0", O_RDONLY) = 3
open("/usr/lib64/libpangoft2-1.0.so.0", O_RDONLY) = 3
open("/usr/lib64/libpango-1.0.so.0", O_RDONLY) = 3
open("/usr/lib64/libfontconfig.so.1", O_RDONLY) = 3
open("/lib64/libgobject-2.0.so.0", O_RDONLY) = 3
open("/lib64/libgmodule-2.0.so.0", O_RDONLY) = 3
open("/lib64/libglib-2.0.so.0", O_RDONLY) = 3
open("/usr/lib64/libXext.so.6", O_RDONLY) = 3
open("/usr/lib64/libXrender.so.1", O_RDONLY) = 3
open("/usr/lib64/libXinerama.so.1", O_RDONLY) = 3
open("/usr/lib64/libXi.so.6", O_RDONLY) = 3
open("/usr/lib64/libXrandr.so.2", O_RDONLY) = 3
open("/usr/lib64/libXcursor.so.1", O_RDONLY) = 3
open("/usr/lib64/libXcomposite.so.1", O_RDONLY) = 3
open("/usr/lib64/libXdamage.so.1", O_RDONLY) = 3
open("/usr/lib64/libpng12.so.0", O_RDONLY) = 3
open("/usr/lib64/libfreetype.so.6", O_RDONLY) = 3
open("/usr/lib64/libpixman-1.so.0", O_RDONLY) = 3
open("/lib64/libz.so.1", O_RDONLY) = 3
open("/lib64/libresolv.so.2", O_RDONLY) = 3
open("/lib64/libselinux.so.1", O_RDONLY) = 3
open("/lib64/libexpat.so.1", O_RDONLY) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/messages.mo",
O_RDONLY) = 3 open("/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) =
3 open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY)
= 3 open("/usr/share/locale/en_US.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/gtk20.mo", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/usr/share/X11/locale/locale.alias", O_RDONLY) = 3
open("/usr/share/X11/locale/locale.alias", O_RDONLY) = 3
open("/usr/share/X11/locale/locale.dir", O_RDONLY) = 3
open("/usr/share/X11/locale/en_US.UTF-8/XLC_LOCALE", O_RDONLY) = 3
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/gtk20-properties.mo",
O_RDONLY) = 3
open("/usr/share/locale/en_US.utf8/LC_MESSAGES/gtk20-properties.mo",
O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/gtk20-properties.mo",
O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/gtk20-properties.mo",
O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/gtk20-properties.mo",
O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/gtk20-properties.mo", O_RDONLY)
= -1 ENOENT (No such file or directory) open("/home/wojtek/.Xauthority", O_RDONLY) = 4
open("/etc/gtk-2.0/gtkrc", O_RDONLY) = 4
open("/home/wojtek/.Xdefaults-rcmtex05", O_RDONLY) = -1 ENOENT (No
such file or directory) open("/usr/share/themes/Slider/gtk-2.0/gtkrc",
O_RDONLY) = 4
open("/usr/lib64/gtk-2.0/2.10.0/engines/libclearlooks.so", O_RDONLY) =
5 open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY)
= 5 open("/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/themes/Default/gtk-2.0-key/gtkrc", O_RDONLY) = 4
open("/usr/lib64/gtk-2.0/modules/libpk-gtk-module.so", O_RDONLY) = 4
open("/etc/ld.so.cache", O_RDONLY) = 4
open("/usr/lib64/libdbus-glib-1.so.2", O_RDONLY) = 4
open("/lib64/libdbus-1.so.3", O_RDONLY) = 4
open("/lib64/libpthread.so.0", O_RDONLY) = 4 open("/lib64/librt.so.1",
O_RDONLY) = 4
open("/usr/lib64/gtk-2.0/modules/libcanberra-gtk-module.so", O_RDONLY)
= 4 open("/etc/ld.so.cache", O_RDONLY) = 4 open("/usr/lib64/libcanberra-gtk.so.0", O_RDONLY) = 4
open("/lib64/libgthread-2.0.so.0", O_RDONLY) = 4
open("/usr/lib64/libcanberra.so.0", O_RDONLY) = 4
open("/usr/lib64/libvorbisfile.so.3", O_RDONLY) = 4
open("/usr/lib64/libvorbis.so.0", O_RDONLY) = 4
open("/usr/lib64/libogg.so.0", O_RDONLY) = 4
open("/usr/lib64/libtdb.so.1", O_RDONLY) = 4
open("/usr/lib64/libltdl.so.7", O_RDONLY) = 4
open("/lib64/libcrypt.so.1", O_RDONLY) = 4
open("/lib64/libfreebl3.so", O_RDONLY) = 4
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV (core dumped) +++ Segmentation fault (core dumped)
为什么java 1.7会尝试加载这么多不同的新文件?
和gdb结果:
(gdb) exec-file /opt/tex/lib/java/jdk1.7.0_71/bin/javaws (gdb) set args /tmp/app.jnlp (gdb) run Starting program: /opt/tex/lib/java/jdk1.7.0_71/bin/javaws /tmp/app.jnlp
> Program received signal SIGSEGV, Segmentation fault. 0x00000036f85683d0 in gtk_message_dialog_format_secondary_text () from
> /usr/lib64/libgtk-x11-2.0.so.0 Missing separate debuginfos, use:
> debuginfo-install XXX-JDK-1.7.0_71-07.x86_64 (gdb)
和JNLP文件看起来像:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><jnlp codebase="xxx" spec="6.0+">
<information>
<title>xxx</title>
<vendor>xxx</vendor>
<description>xxx.</description>
</information>
<security>
<all-permissions/>
</security>
<update check="timeout" policy="always"/>
<resources><extension href="file:////tmp/jvmconnector.jnlp" name="jvmconnector"/><extension href="file:////tmp/swinglibrary.jnlp" name="swinglibrary"/><extension href="file:////tmp/swinglibraryextension.jnlp" name="swinglibraryextension"/>
<j2se max-heap-size="512m" version="1.7"/>
<j2se max-heap-size="512m" version="1.6"/>
<jar href="xxx-app.jar" main="false"/>
<jar href="yy-xxx-app.jar" main="false"/>
<jar href="xxx-yyyy.jar" main="false"/>
<jar href="xx-zzzz.jar" main="false"/>
<extension xmlns:cm="xxx.xs" href="https://xxx.jnlp" name="xxx"/>
<property xmlns:pl="http://xxx.xs" name="xxx.AppURL" value="https://xxx"/>
<property name="xxx.UserName" value="xxx"/>
<extension href="xxx/client.jnlp" name="xxx"/>
<extension href="xxx/client.jnlp" name="IBM WS7 JWS"/>
<property name="xxx.httpsession.id.LtpaToken2.name" value="LtpaToken2"/>
<property name="xxx.id.LtpaToken2.path" value="/"/>
<property name="xxx.httpsession.id.JSESSIONID.name" value="JSESSIONID"/>
<property name="xxx.httpsession.id.JSESSIONID.path" value="/"/>
<property name="xxx.sysprops.url" value="https://xxx/sys-cert-ssl.properties"/>
<property name="jnlp.java.naming.provider.url" value="{$corbaloc:iiop:xxx:9810}"/>
<extension xmlns:mp="http://xxx.xs" href="xxx.jnlp" name="Mercury Client Libs"/>
<extension xmlns:nl="http://xxx.xs" href="xxx.jnlp"/>
<property name="xxx" value="xxx"/>
<property name="jnlp.com.ibm.CORBA.Debug.Output" value="nul"/>
</resources>
<application-desc main-class="RMILauncher"><argument>/tmp/RMIStartswingLibrary2015-06-08-12-24-5633.xml2682499309750982226.xml</argument><argument>xxx</argument>
<argument>-appbase</argument>
<argument>xxx-app.jar</argument>
<argument>-xxx</argument>
<argument>-startapp</argument>
<argument>xxx.Application</argument>
<argument>-Pxxx.id.JSESSIONID=xxx</argument><argument>-xxx.LtpaToken2=xxx</argument><argument>-Pxx.id.LtpaToken=</argument>
</application-desc>
</jnlp>
答案 0 :(得分:0)
解决方案是:向javaws添加任何param(例如-J或-Verbose)。
请参阅https://superuser.com/questions/854293/java-web-start-seg-faults-when-run-with-no-arguments