I've been talking with Webbot about this, but he seems stumped too. The issue only happens on my work computer and my co-workers computer (at a US naval base). I suspect maybe they changed some network setting that is blocking java . . . but this is what they said:

Quote

No, we do not block java apps on the pc's. What does crop up is running incompatibility between the latest releases of java and what must be supported by IMPS. Try reinstalling the JRE and checking that your jnlp is compatible with your current setup.

I'm running the latest java version.

the issue:While upgrading to v1.28 from v1.27, it won't finish the installation process (error: 'Unable to launch the application'). The progress bar will go 85%, then give me this error:

Quote

com.sun.deploy.net.JARSigningException: Found unsigned entry inresource: http://webbot.org.uk/webbotlib/ProjectDesigner.jar at com.sun.javaws.security.SigningInfo.getCommonCodeSignersForJar(Unknown Source) at com.sun.javaws.security.SigningInfo.check(Unknown Source) at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(Unknown Source) at com.sun.javaws.LaunchDownload.checkSignedResources(Unknown Source) at com.sun.javaws.Launcher.prepareResources(Unknown Source) at com.sun.javaws.Launcher.prepareAllResources(Unknown Source) at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source) at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source) at com.sun.javaws.Launcher.launch(Unknown Source) at com.sun.javaws.Main.launchApp(Unknown Source) at com.sun.javaws.Main.continueInSecureThread(Unknown Source) at com.sun.javaws.Main$1.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

Webbot then made sure it was signed, and had me delete cached versions by going to Control Panel -> Java -> View...

Running it again, it still goes to 85% progress bar, then gives me this different error:

Quote

com.sun.deploy.net.FailedDownloadException: Unable to load resource:http://webbot.org.uk/webbotlib/ProjectDesigner.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)

java.io.EOFException: Unexpected end of ZLIB input stream at java.util.zip.InflaterInputStream.fill(Unknown Source) at java.util.zip.InflaterInputStream.read(Unknown Source) at java.util.zip.ZipInputStream.read(Unknown Source) at com.sun.deploy.net.HttpDownloadHelper.decompressWrite(Unknown Source) at com.sun.deploy.net.HttpDownloadHelper.download(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)

Hunting around on the web I've found this other general post about the error message:-

Quote

It seems to be somehow related to the bandwidth and to the size of the jar. I never get this error when I launch the application from the local network, it only happens when "the line" is slow.Another suspicious thing is the message in JNLP downloading dialog: "Download stalled", but with the combination of luck and patience (waitng ~60 sec) the application starts normally.

For info - I'm using (build 1.6.0_11-b03)But since your version is working from your home computer then I don't see why this should be an issue.Equally - whereas the message 'Unexpected end of ZLIB input stream' might seem ti indicate a corrupted file at my end then this cannot be the case if you, and others including me, can successfully download it on other machines.The 'jnlp' file hasn't changed for a long long time (when we gave it more RAM) nor has the signing process nor the number of 3rd party jars.

Hence I agree that it must be related to your network/firewall setup at work.

After a lot of back and forth, I got this from the sys admin:"My java expert read the exception error as an inability to download the jar file. Looks like NRL is blocking the site or port. You should be able to email the develop and ask for the jar directly and run from there."

Your site isn't being blocked (yet), so I suspect it's the java port being locked for security reasons. How would you recommend I proceed?

Hmmm. I don't really want to get into the scenario of releasing the Designer Tools as downloads as I then have to worry about what version everybody is using when they report a problem as well as having to package and announce each little change as a release. Currently - everybody is always on the latest version. So if I add support for a new device, or fix an issue, then it automatically gets deployed out to everyone.

As a standalone release I would also have to add in a front end to launch the relevant designer whereas at the moment its just a url.

How do you proceed? Well kick NRL to allow access to the site - is the quick response. If the tools are important to your job, and you've been using them for over a year without issues, then plead with them! And explain that if they are worried about security then downloading the code to your local machine as a workaround wouldn't stop any of the security issues caused by the code. You are just side stepping the auto-download process by doing a manual download, or have me email the code to you, instead.

If the machines aren't completely locked down then alternatively - if they let you do it - plug in a 3G cell phone dongle to connect to the internet every now and them to get the latest version.

Of course I'm always open to having my palms greased with silver - but lets take that offline!

Could you send me a special offline file for now, until I get this worked out?

Also, I noticed it doesn't work in offline mode - how can I get that to work? This is very important when programming at robot competitions without internet access . . .

The NRL is a military-run operation, top heavy with bureaucracy, draconian generals, 'it's good enough for government work' employees, and I'm just a wee little civilian researcher in a basement lab with a robot fish. Even if I could get them to do it, it'll take weeks or months.

On the bright side, madsci says they ban GPS and USB keys on his base down in Florida, so I guess I can't complain . . .

Could you send me a special offline file for now, until I get this worked out?

Erm - No not now - as there is no such thing as a single file. Each Designer is made up of lots of separate JAR files. As some code is common to say board designer and project designer. Hence my comment that I would need to package all the files you would need and then also add a launcher program - even if it was a batch file - as there are class path settings that would need to be set. So its not a 5 minute job ! eg I would need to write something to re-create everything that Java Web Start already does for everybody else ;-)

Quote

Also, I noticed it doesn't work in offline mode - how can I get that to work? This is very important when programming at robot competitions without internet access . . .

Well it 100% definitely does work offline. Its just that we cleared your cache when trying to get to the bottom of your problem. So you now have no versions of Project Designer installed on your machine and you cant download a new version due to your firewall. So you are now 100% Project Designer free.

Quote

The NRL is a military-run operation, top heavy with bureaucracy, draconian generals, 'it's good enough for government work' employees, and I'm just a wee little civilian researcher in a basement lab with a robot fish. Even if I could get them to do it, it'll take weeks or months.

On the bright side, madsci says they ban GPS and USB keys on his base down in Florida, so I guess I can't complain . . .

Also, I noticed it doesn't work in offline mode - how can I get that to work? This is very important when programming at robot competitions without internet access . . .

Well it 100% definitely does work offline. Its just that we cleared your cache when trying to get to the bottom of your problem. So you now have no versions of Project Designer installed on your machine and you cant download a new version due to your firewall. So you are now 100% Project Designer free.

Although true for my work PC, I didn't clear the cache on my two coworkers computers. We tried going into Java settings, view, and then right click, followed by 'run offline' . . . but it'll immediately come up with an error giving me two options: connect online, or cancel . . .

Forget all that jiggery pokery. Just unplug your network cable or wifi card and click on the desktop shortcut icon for Project Designer.

So long as the app is still in your browser download cache (and hasn't been kicked out cause your cache has exceeded the limit set by Windows) it will run the last version you downloaded if it cant connect to the net. If not then log a bug at the Sun/Oracle support site - as that is the whole concept of what Java Web Start does and is 100% out of my control ie there is NONE of my code that is even executed until AFTER a downloaded/cached version of the program is run.

You will see that the links to run any of the designers, from webbot.org.uk, all end in a .jnlp extension. JNLP is the technology behind Java Web Start. At the end of the day the jnlp file is just a text file. For Project Designer it looks like this:-

And that is it - there is NOTHING else that I need to do. No extra code. Its all handled by Java. All of the downloading/syncing etc.

You will see that the <resources> tag surrounds the list of (my) jar files that are required as well as the descriptor for the version of Java required. In this case it makes sure you have version 1.6.0 or above and if not then downloads the latest Java release from http://java.sun.com/products/autodl/j2se.

But here is my understanding of what Java Web Start does underneath the hood (ie 100% out of my control and I'm sure a Java documentation site would fill any blanks or correct any of my misunderstandings)....When you download this file for the first time it creates a desktop shortcut that executes the downloaded files from the download cache. Since the jnlp file itself is one of the downloaded/cached files then it knows where it was downloaded from (as its described in the file above). If you look at the properties of the desktop shortcut it refers to the 'copy' of the jnlp file that is now in the cache. So running for the second time via the desktop shortcut then you are executin g the cached jnlp file. It will then TRY to connect to the internet, since the jnlp file (above) describes where it came from, so it will check the locally cached version against the latest version on the live server and re-download any updated version into the cache. So either way: the cache now has the latest code or, if no internet connection is available, is has the last downloaded version. It now executes the code from the cache.

As far as my own code is concerned - it is NEVER called until after all of the above downloading/checking process has finished.

Forget all that jiggery pokery. Just unplug your network cable or wifi card and click on the desktop shortcut icon for Project Designer.

So long as the app is still in your browser download cache (and hasn't been kicked out cause your cache has exceeded the limit set by Windows) it will run the last version you downloaded if it cant connect to the net. If not then log a bug at the Sun/Oracle support site - as that is the whole concept of what Java Web Start does and is 100% out of my control ie there is NONE of my code that is even executed until AFTER a downloaded/cached version of the program is run.

I had my coworker disable internet, and unplug the wireless card. This is the error that came up when trying to run PD:

Quote

CouldNotLoadArgumentException[ Could not load file/URL specified: C:\Documents and Settings\mpruessner\Application Data\Sun\Java\Deployment\cache\6.0\37\7e6c4b25-7a65cbd8]

at com.sun.javaws.Main.launchApp(Unknown Source) at com.sun.javaws.Main.continueInSecureThread(Unknown Source) at com.sun.javaws.Main$1.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

java.io.FileNotFoundException: C:\Documents and Settings\mpruessner\Application Data\Sun\Java\Deployment\cache\6.0\37\7e6c4b25-7a65cbd8 (The system cannot find the file specified)

at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source) at com.sun.javaws.Main.launchApp(Unknown Source) at com.sun.javaws.Main.continueInSecureThread(Unknown Source) at com.sun.javaws.Main$1.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

ps - I'm forwarding this to my local sys admin, so don't say anything that makes him permanently cut off my internet

So your co-worker probably clicked on the desktop shortcut which references the cache entry at C:\Documents and Settings\mpruessner\Application Data\Sun\Java\Deployment\cache\6.0\37\7e6c4b25-7a65cbd8which no longer exists - ie it has been cleared out of the cache by Windows/Java etc or manually. Hence the FileNotFoundException.

If connected to the net then the next thing it would try to do is to redownload everything from the webbot website (if your firewall let it).

Note that the Java console allows you to specify how much space is used by the Java cache for this sort of stuff. So if your co-worker has accessed other stuff and the cache has filled up then the Project Designer code in the cache may have been thrown away. Equally all those Windoze options like clearing up 'temporary files' also tend to wipe out the cache.

i just got this error then trying to open Project Designer. The last time i use PD was last week and the only thing that changed on my computer was it installed updates. So, thinking that was the problem, I restored it. However, i still get this application error. any ideas?

all those Windoze options like clearing up 'temporary files' also tend to wipe out the cache.

Hmm, That's far from 100% working offline for windows users (like me) who have windows set to clear cache on a regular schedule, which is a good healthy practice to keep windows running smoothly. Now I know why I always had to fresh install every few weeks or get error messages during start-up.

Quote

This is very important when programming at robot competitions without internet access . . .

I agree. Relying on a 'system cache' to keep a local copy of the program seems like a bad idea. I'm ok with 'forcing updates' when online, but count me +1 for a more permanent local install.

It seems like this problem and your other issues of shrinking code by forcing people to use PD would lead to the natural conclusion of combing the two into one downloaded product.

Like a self-extracting archive that drops out the webbotlib code and the PD program to go with it. PD can 'check or updates' but really is completely stand-alone. If there is an update, both PD and webbotlib code are updated as one package.

Also solves the problem of PD self-updating, but the user not downloading the new webbotlib source.

I can't change the way JNLP (aka Java Web Start) works, caching etc, - its beyond my control and I don't even get involved in the process of downloading/caching etc so have no way to change how Java works -other than saying in the JNLP that something can work offline.

Equally: I can't provide a windows MSI installer etc as it will also need to work on Mac/Linux - and, YES, WebbotLib has users for all of these platforms including installing DLL, and their unix equivalents, for serial comms in GaitDesigner.

So I need to write my own installer and version update checker. Thanks guys - is a major bummer and will take ages so you will have to live with the current situation until done. Version update will be interesting as its hard to 'delete and replace' code that is running. Since code is released on stuff like SourceForge, etc, which are NOT running any of my code - and CANNOT - then checiking for new releases will probably still have to rely on the use of HTTP HEADER in the same way as Java Web Start does.

I can't wrap it up with WebbotLib release stuff. As PD supports (V1) WebbotLib code as well as (V2) WebbotLib code. ie I am not forcing people to stop using V1 of WebbotLib - but new functionality may be done in V2. So it cannot be a holistic release for now.

I understand the issue and have to try and find a better solution. Unless you are a Java cross platform Guru then I would appreciate your silence.

Have made good progress with a Webbot Downloader app. For now it works with jnlp apps like the various Webbot designers but have had success with other 3rd party jnlp apps. Want to expand it to also work with documentation (ie a local copy of the html WebbotLib user docs) and maybe the download of WebbotLib from SourceForge.

But the Designers all seem to work - so if anyone other than Admin is interested then give me a shout.

I would be happy to help resolve the problem, I still need to know the port number for the jar file. I was able to glean the url from the error message but the rest is still a mystery.

I'd assume the port is dynamically chosen by the Java software and that you have no control over it, but just wanted to verify this first . . . I googled around, but wasn't exactly sure what terminology I was searching for to find out myself . . .

I would be happy to help resolve the problem, I still need to know the port number for the jar file. I was able to glean the url from the error message but the rest is still a mystery.

I'd assume the port is dynamically chosen by the Java software and that you have no control over it, but just wanted to verify this first . . . I googled around, but wasn't exactly sure what terminology I was searching for to find out myself . . .

As far as I know it just uses an HTTP HEADER msg to determine if something is out of date - ie this returns the last modified date and the size which is compared against the local copy. So it should just use port 80.

I had the exact same problem trying to execute the Project Designer download. I went to Java Control Panel (through the Windows control panel), then clicked on the Java tab, which displayed the versions of Java running on my machine. It showed:

Platform: 1.7Product: 1.7.0_07

and

Platform: 1.6Product: 1.6.0_33

Both had the Enabled checkbox checked.

I unchecked the Platform 1.7 Enabled checkbox and retried the Designer download - it executed without a hitch.

Sorry - 'executed' was the wrong term.... what I was experiencing was similar to what you describe - sometimes the Java progress dialog would say 'Downloading application', and the progress bar would go to 40%, 50%, even 80% sometimes, then just hang there forever.

Other times, the dialog would say 'Verifying application', and do the same thing (hang at something less than 100%).

I had no real reasoning for disabling the newer Java version other than poking at anything that would move - so I have no idea why doing so allowed the app to download and run - just thought it might work for someone else.