Solved

Lunch Application via Java Web Start

Posted on 2012-03-12
10
1,252 Views
Last Modified: 2012-03-13
I am going to use Java Web Start to distribute a Java application. The application includes two jar files: Client.jar and log4j-1.2.13.jar. When application starts up, error message displayed: Found unsigned entry in resource: http://localhost/JavaClient/ log4j-1.2.13.jar. The exception is: com.sun.deploy.net.JARSigningException.

The Java runtime is JRE 6. I don't have the source code of the Java application.



Here is jnlp codes:

<?xml version="1.0" encoding="utf-8"?>
<!--
###############################################################################
#
# Client.jnlp      1.6 02/09/11
#
# JNLP File for Java Client Application
#
###############################################################################
 -->
<jnlp
  spec="1.0+"
  codebase="http://localhost/JavaClient" href="Client.jnlp">

  <information>
    <title>Java Client</title>
    <vendor>MyCompany Inc.</vendor>
    <description>Java Web Client</description>

  </information>

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

  <resources>
    <j2se version="1.4+"/>
    <jar href="Client.jar"/>
    <jar href="log4j-1.2.13.jar" />
  </resources>

  <application-desc main-class="com.myCompany.Security.LogOn">
    <argument> -verbose</argument>
  </application-desc>
</jnlp>
0
Comment
Question by:dev_yinz
  • 6
  • 4
10 Comments
 
LVL 47

Accepted Solution

by:
for_yan earned 500 total points
ID: 37713179
0
 

Author Comment

by:dev_yinz
ID: 37713342
Following the instruction, I change the content of MANIFEST.MF. If Java Caching is enabled, I see the exception (I can "download" the log4j-1.2.13.jar from address so it shall not be access rights issue). If I disable Java Caching, signature exception happened again.

Exception:
com.sun.deploy.net.FailedDownloadException: Unable to load resource: http://localhost/JavaClient/log4j-1.2.13.jar
      at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
      at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
      at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
      at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
      at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
      at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
      at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
      at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)

Wrapped Exception:
java.io.IOException: invalid manifest format
      at com.sun.deploy.cache.CacheEntry$9.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at com.sun.deploy.cache.CacheEntry.writeFileToDisk(Unknown Source)
      at com.sun.deploy.cache.Cache.downloadResourceToTempFile(Unknown Source)
      at com.sun.deploy.cache.Cache.downloadResourceToCache(Unknown Source)
      at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
      at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
      at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
      at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
      at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
      at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
      at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
      at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)



Original MANIFEST.MF:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.4
Created-By: 1.3.1_16-b06 (Sun Microsystems Inc.)

Name: org/apache/log4j/
Implementation-Title: log4j
Implementation-Version: 1.2.13
Implementation-Vendor: "Apache Software Foundation"


After Change:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.4
Created-By: 1.3.1_16-b06 (Sun Microsystems Inc.)

Implementation-Title: log4j
Implementation-Version: 1.2.13
Implementation-Vendor: "Apache Software Foundation"
0
 
LVL 47

Expert Comment

by:for_yan
ID: 37713370
I understood so that that whole thing (all four lines )
should be removed:

Name: org/apache/log4j/
Implementation-Title: log4j
Implementation-Version: 1.2.13
Implementation-Vendor: "Apache Software Foundation"

Don't know if I am correct
0
 

Author Comment

by:dev_yinz
ID: 37713406
I think log4j-1.2.13.jar is "unsigned" while Client.jar is signed by developer. I don't have source code, is there any way to "sign" the jar files? Or log4j-1.2.13.jar must be signed using the same private key as Client.jar?
0
 
LVL 47

Assisted Solution

by:for_yan
for_yan earned 500 total points
ID: 37713490
They are alos mentioing that some older Java version will work without this problem.
see here:
https://www.servoy.com/forum/viewtopic.php?f=6&t=14128


which Java 1.6 update are you using?
0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 

Author Comment

by:dev_yinz
ID: 37713503
It is verson 6 update 30. (build 1.6.0_30-b12). I cannot down grade the Java version. Otherwise, I have to configure a lot of clients and most of them are overseas. I will see if there is any possible to sign the log4j-1.2.13.jar.
0
 
LVL 47

Assisted Solution

by:for_yan
for_yan earned 500 total points
ID: 37713519
certainly you can try to sign, though it sounds a little bit funny but why not try:
http://docs.oracle.com/javase/1.3/docs/tooldocs/win32/jarsigner.html
0
 
LVL 47

Assisted Solution

by:for_yan
for_yan earned 500 total points
ID: 37713529
I think  this is also a good description of  jar sigining:
http://www-personal.umich.edu/~lsiden/tutorials/signed-applet/signed-applet.html
0
 
LVL 47

Assisted Solution

by:for_yan
for_yan earned 500 total points
ID: 37713531
you can also look at this trail if you encounter problems - it follows the siging process rather closely:
http://www.experts-exchange.com/Programming/Languages/Java/Q_27536681.html
0
 

Author Closing Comment

by:dev_yinz
ID: 37713834
Thank you very much for the help. I will try to study these info. Anyway, I will close this thread first.
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Suggested Solutions

Are you developing a Java application and want to create Excel Spreadsheets? You have come to the right place, this article will describe how you can create Excel Spreadsheets from a Java Application. For the purposes of this article, I will be u…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:
This tutorial covers a practical example of lazy loading technique and early loading technique in a Singleton Design Pattern.

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now