Giter Site home page Giter Site logo

getdown's People

Contributors

agharta avatar anol77 avatar asabanas avatar bekoenig avatar bskaarup avatar deadmoose avatar dependabot[bot] avatar groves avatar jamie-threerings avatar leaqui avatar maeichris avatar mjohnson-ooo avatar mjothy avatar mthomas96 avatar myron0815 avatar neher avatar noblemaster avatar noir2k avatar pb00068 avatar reda-alaoui avatar runiter avatar samskivert avatar sdgx avatar sergiorussia avatar stephenneal avatar thokuest avatar thomasg-ai avatar ullenius avatar vatsal22 avatar xylo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

getdown's Issues

Digest algorithm and Maven snapshots

It seems to not break functionality; only irritating / wrong metadata
TL;DR

The Resource.computeDigest() Line 241 ignores the META-INF.
This might work well for most users, but i encountered an issue while working with my project:

Have a Maven project, distributing sometimes some snapshot jars (for testers).
In gui, i display the JAR manifest impl version, to get a clue what is deployed in what version.

When i now release that jar, so that ONLY the metadata changes (but not a class file; compared to last snapshot update), the digest is the same, and never downloaded/updated the release version! (still displaying snapshot in gui)
(Would be the same, if you always release unchanged jars, to have them all on same version)

What is/was the need for skipping the meta-inf?
How could i change that w/o breaking live instances (aka GD self update)?
It gives me a slightly bad feeling, that not the jar i deploy is downloaded and checked 1:1...

Custom JVM installation does not work with relative appdir

My getdown.txt looks like this:

appbase = http://localhost:8081/test
code = helloworld.jar
class = HelloWorld
java_min_version = 9999999
java_location = [linux] /jvm/java_linux.jar

When running getdown with an absolute appdir (e.g. java -jar test/getdown.jar /path/to/test) it works, but when running with a relative appdir (e.g. java -jar test/getdown.jar test) it doesn't.

Excerpt from launcher.log:

2015/03/24 17:22:37:937 WARNING m.a: launch() failed.
java.io.IOException: Cannot run program "test/java_vm/bin/java" (in directory "test"): error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
    at java.lang.Runtime.exec(Runtime.java:617)
    at com.threerings.getdown.data.Application.createProcess(Unknown Source)
    at com.threerings.getdown.launcher.Getdown.launch(Unknown Source)
    at com.threerings.getdown.launcher.Getdown.getdown(Unknown Source)
    at com.threerings.getdown.launcher.Getdown.run(Unknown Source)
Caused by: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:186)
    at java.lang.ProcessImpl.start(ProcessImpl.java:130)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
    ... 5 more

The problem is that (at least on my Linux system) the program path should be relative to the working dir of the subprocess, which is the appdir (see

return Runtime.getRuntime().exec(sargs, envp, _appdir);
), but currently the appdir is also prepended to the program path (
String vmpath = checkJVMPath(new File(appdir, LOCAL_JAVA_DIR).getPath(), windebug);
).

ETA for 1.4 ?

Hi,

Thanks for sharing getdown.
When do you plan to release 1.4 ? or a mislestone ?

I create a gradle-getdown-plugin, mainly to be able to package app (with jre). App that could be run online, offline of without deployement on an http server. And the fix to be able to run app offline or without http server defined is in 1.4.

Show GUI but not launch

Is it possible to show the GUI, but not launch the application?
In a worst-case scenario I guess I can import getdown.jar into my classpath, and extend the StatusPanel to create my own GUI, but that sounds like a lot of work ...

Release documentation

Would it be possible to have a little documentation, and maybe some configuration options in the Maven pom.xml, to be able to release a fork in an internal Maven repo while waiting for pull-requests or official release to comes out?
Today some plugin prevent a standard Maven release to take place out-of-the-box, and if removed some of the jar content is obviously missing

Exception in thread "main" java.lang.NoClassDefFoundError: com/samskivert/util/StringUtil
        at com.threerings.getdown.launcher.GetdownApp.main(GetdownApp.java:44)
Caused by: java.lang.ClassNotFoundException: com.samskivert.util.StringUtil
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more

use_code_cache doesn't work.

If you set use_code_cache to true in getdown.txt you get an exception when trying to create the Application

Looking at

_useCodeCache = Boolean.parseBoolean((String) cdata.get("use_code_cache"));

If use_code_cache is true it then tries to parse it a second time as an Integer which obviously fails with a NumberFormatException.

        _useCodeCache = Boolean.parseBoolean((String) cdata.get("use_code_cache"));
        _codeCacheRetentionDays = cdata.containsKey("code_cache_retention_days") ?
            Integer.parseInt((String) cdata.get("use_code_cache")) : 7;

I suspect the parseInt is supposed to be on code_cache_retention_days.

Resource Partially Updated

Whenever I am releasing any update, most of the clients are getting NoClassDefFound exception. I want to know are you deleting main resource file then start downloading, or you download file in temp folder then update original files ?

Create the proxy.txt when needed

Hi,

Using getdown, I observe the creation of the file proxy.txt.
Is it mandatory ? Can we condition this creation on the content of getdown.txt ?

Thx

Launch the application as a jar file

Hi,

I am willing to launch the application through getdown as a jar file.
e.g: 'java -jar foo.jar'

However the current behavior of getdown is to launch the application by specifying the classpath.
'java -classpath foo.jar'
In the case the jar represents a web app that relies on dependencies packaged inside the same jar, we have exception such as NoClassDefFound.
On the contrary, launching 'java -jar foo.jar' perfectly works.

So here my questions:

  1. Am I missing something in the getdown dot text that can tackle my need ?
  2. Is getdown considering the "jar option" in its roadmap ?
  3. If so, I can make a pull request since I already implemented my need in a fork.

Thx for your help

Aborting initial "ucode" download cause dead-boot-loop [v1.5]

getdown-1.5

When I use packed200 codebase( ucode=) and abort fist download in a middle getdown cannot start anymore throwing

Error: unpacker: EOF reading band

If I don't interrupt packed download: app starts fine.

If I interrupt not packed200( code=) codebase initial download: I can continue download on second run~~( although progress bar falsely shows 70%)~~

System.out being swallowed

The System.out prints are getting swallowed by the getdown app. I can see that my application is launching successfully and writing a test file to the filesystem but can't see any stdout in either the launcher.log or in the console I launch the app from. I guess it's something to do with log4j config?

Unable to hide decorations from launch window

I am trying to hide the decorations from the launch window by using ui.hide_decorations=true. However, my window is still decorated, showing the name and icons.

I can't find out what I am doing wrong.

Please find below my configuration:

ui configuration

ui.name = Skybridge
ui.background = FFFFFF
ui.background_image = images/skybridge_splashscreen.jpg
ui.progress = 0, 388, 650, 30
ui.progress_bar = EBB80F
ui.progress_text = 004E72
ui.status = 16, 366, 300, 8
ui.status_text = 004E72
ui.icon = icons/unifly_color_icon16.png
ui.hide_decorations = true

Windows and UAC

Hi Sir

Usually on Windows we install software in the Programs Folder.
Getdown.jar as all other java applications can't write to that folder (because they don't have any writing permission from the os) and so Getdown doesn't work.
Do you have any advice ?
We try to use Launch4j with a UAC elevation manifest. This is a fine solution but the system ask everytime to the user to elevate his rights. This is a little annoying.
There is any other solution ?

Regards

Andrea

Display an accurate message to the user on "no nospace left" exception

Hello,

When there is no more disk space while getdown is downloading app components, we end up with the following kind of stack trace:

2015/11/24 12:15:16:605 INFOS n.a: Downloading resource [url=http://localhost:9000/my-lib.jar.pack.gz, size=85085]
2015/11/24 12:15:16:621 AVERTISSEMENT n.a: Download failed [rsrc=null]
java.io.FileNotFoundException: .\lib\my-lib.jar.pack.gz (Espace insuffisant sur le disque)
    at java.io.FileOutputStream.open0(Native Method)
    at java.io.FileOutputStream.open(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at com.threerings.getdown.net.HTTPDownloader.doDownload(Unknown Source)
    at com.threerings.getdown.net.Downloader.download(Unknown Source)
    at com.threerings.getdown.net.Downloader.download(Unknown Source)
    at com.threerings.getdown.launcher.Getdown.download(Unknown Source)
    at com.threerings.getdown.launcher.Getdown.getdown(Unknown Source)
    at com.threerings.getdown.launcher.Getdown.run(Unknown Source)

Would it be possible, on FileNotFoundException catch, to check for the disk space and display an accurate message to the final user?
Or maybe we could just display the technical error which is sufficiently understadable?

In any case, I think the exception should be catched and not trigger a Getdown crash.

Add support for pack200

Pack200, specified in JSR 200, is a compacting archive format developed by Sun, reducing JAR file sizes by a factor of 7 to 9.

It would be nice if getdown supports pack200 files and unpacks them after downloading.
This will reduce the download time of big jar files.

Getdown.txt in relation to the operating system

Hello

we have developped a multi-platform app and we have a problem configuring java option on the getdown.txt file, because java options have different syntax on different operating systems
For example on windows the path separator is the semicolon char (;) while on Linux is the colon char (:)

So on Windows our getdonw.txt configuration contains
jvmarg = -Djava.library.path=folder1**;folder2
while on Linux
jvmarg = -Djava.library.path=folder1
:**folder2

(please read carefully, the above statements are different, the first contains a semicolon and the second a colon)

Future versions of the program should take this into account.
It would be interesting to provide different java configurations, in relation to the user operating system.

What about that ?

Regards from Italy

Andrea

SFTP and getdown

Is there a way I can use getdown connect to a SFTP? What I need do?

Digest computation on packed 200 jars should only consider jar content

Today, digest computation considers the whole packed jar to compute its checksum.
It's problematic because rebuilding the jar with the same content and packing results in a new checksum.

The packed 200 jar should be unpacked and checksum should only process jar entries by excluding the manifest.
The second phase is already done for a standalone jar, unpack phase should be executed before computing the checksum.

Licence confusion

The content of <license> tag of the pom.xml states that Getdown is LGPL licensed:

  <licenses>
    <license>
      <name>GNU Lesser General Public License (LGPL), Version 2.1</name>
      <url>http://www.fsf.org/licensing/licenses/lgpl.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

Whereas Github and the licence file states that it's the BSD-2 licence.

What's correct?

Translation for Brazilian Portuguese

Hi, I created a translation file for Brazilian Portuguese and I want add this in your project. As I don't have permission to commit, perhaps someone can commit it :)
You can download the translation here

SysPropsTest sensitive to build env, fails in some cases

The SysPropsTest is fragile when running on some Java versions.

For example, on the latest JDK 1.8 (1.8.0_152-ea-b01) available at time of posting, we see the following failure when running unit tests.

shouldParseJavaRuntimeVersion(com.threerings.getdown.data.SysPropsTest)  Time elapsed: 0.006 sec  <<< ERROR!
java.lang.IllegalArgumentException: Regexp '(\d+)\.(\d+)\.(\d+)(_\d+)?(-b\d+)?' does not match '1.8.0_152-ea-b01' (from java.runtime.version)
	at com.threerings.getdown.data.SysProps.parseJavaVersion(SysProps.java:127)
	at com.threerings.getdown.data.SysPropsTest.shouldParseJavaRuntimeVersion(SysPropsTest.java:25)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

The workaround is to use a different JDK or build with overriden properties (e.g. mvn clean install -U -Djava.version=1.8.0_152 -Djava.runtime.version=1.8.0_152 but that kind of makes the test pointless.

Solution, have a test do a number of different version checks rather than rely on whatever happens to be running the test.

No corner icon on first install.

I just wrote my first installer for Getdown.

I bundled my icon with my installer and included it in the getdown.txt file, yet no corner icon is shown.

I thought maybe I had done something wrong, but when I checked something well-done like Spiral Knights, I noticed the same thing.

On the initial install, no icon.
No Corner Icon

However on subsequent launches the corner icon does show.

On subsequent launches the corner icon does show

Is this project still active?

We're using Java Web Start currently to deploy our application. I'd like to bundle a JRE with the application and so I'm evaluating getdown as a replacement for the Web Start solution. So, first of all, thanks for this nice library. It works quite well.

Is the getdown project still active and accepts pull requests?

Configure 'appbase' as parameter

Is it possible to configure the appbase as a parameter of the java command?

Maybe like this...
java -jar myapp/getdown-X.Y.jar myapp http://myapplication.com/myapp/
or
java -jar myapp/getdown-X.Y.jar myapp appbase=http://myapplication.com/myapp/

We want to use getdown from a network path to install our application on the clients. Our appbase should located on a http- or file-server. Otherwise we think we had to install getdown and the config getdown.txt on every client. Is there another solution?

No Java Flight Recordings when started with GetDown

I want to profile with Java Flight Recorder / Java Mission Control, so I put the appropiate jvmargs in the getdown.txt. When I open the recording file, I keep getting the a message that says that there are no recording events.
Strangely when I start my progam without GetDown, I do get a working recording.

Any idea why this is (not) happening?

Edit: Added jmvargs
BTW I'm using the latest which has the %ENV.XXX% feature.
From getdown.txt

# Java VM Args
jvmarg = -Xms512m
jvmarg = -Xmx512m
jvmarg = -Dsun.java2d.d3d=false
jvmarg = -Dsun.java2d.ddoffscreen=true
jvmarg = -Dsun.java2d.noddraw=true
jvmarg = -XX:+UnlockCommercialFeatures
jvmarg = -XX:+FlightRecorder
jvmarg = -XX:FlightRecorderOptions=disk=true,repository=<path>\%ENV.USERNAME%,dumponexit=true,dumponexitpath=<path>\%ENV.USERNAME%
jvmarg = -XX:StartFlightRecording=defaultrecording=true,settings=profile

From launcher.log

-Xms512m
-Xmx512m
-Dsun.java2d.d3d=false
-Dsun.java2d.ddoffscreen=true
-Dsun.java2d.noddraw=true
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
-XX:FlightRecorderOptions=disk=true,repository=<path>\%ENV.USERNAME%,dumponexit=true,dumponexitpath=<path>\%ENV.USERNAME%
-XX:StartFlightRecording=defaultrecording=true,settings=profile

Looks pretty the same to me...

Webstart "Sandbox"

Is there any intention of providing Sandbox support through Java's Security Manager? Part of the theoretical (though often times more questionable) value of WebStart was the Sandbox.

Java permission fix is missing for jspawnhelper file in solaris

When getdown downloads updated java_vm.jar file, it makes all the files in the bin folder executable.

For Solaris this is not enough - there is a file lib/amd64/jspawnhelper, which should also be marked as executable (it's used for spawning new processes in solaris).

PS I would recommend to refactor comments and logging in com.threerings.getdown.launcher.Getdown#updateJava to make them more serious

Convert getdown.txt to getdown.xml

Hi,
My compliments to your project, it solved me many problems!!!

One tip: what do you think about convert getdown.txt into a more standard and flexible xml???

In this way, you can include an xls/dtd for code-completion&validation!

Thanks a lot again for your fantastic work!

Agharta

Expose in the getdown console the output of the launched process

Hi,

Last version of getdown allows to launch a 'jar' application with the "manifest" keyword. (class = manifest)
However the wiki states that it is not possible to use the flag "-Ddirect=true" with this option.

Launching the app in the same jvm than getdown would be interesting to directly get the application's output in the same console used to launch the update of the said app.(instead of tailing the log file)

Do you think this would be easy to achieve ?

Thx

Verification file still here after application launch

Hi,

I would like to know if it is normal that we still have validation files after the application (code) startup.

If so, can we consider to remove them ?
According the doc (https://github.com/threerings/getdown/wiki/Design#validation-path) those files tells Getdown that the tracked file has been checked.
So once the application is launch we don't need them anymore, right ?

Seems like the 'clearValidationMarkers' can do the work but i'm not sure about the consequences.

get down 1.6 starting with an appbase with empty appdir fails on digest

Using get down 1.6 on an empty appdir with -Dappbase=xxx or an appdir with just a getdown.txt with appase=xxx fails because it can't find digest2.txt

Eg, in empty directory:

java -Dappbase=http://xxx/yyy -jar /lib/getdown-1.6.jar .

popup error saying:

The application has failed to launch due to missing resource:
http://xxx/yyy/digest.txt

As I'm using getdown 1.6, the digest is version 2 and so the digest file is digest2.txt not digest.txt and I don't think this should be an error.

Allow for environment variables in the getdown.txt

Some applications require a system environment variable to be passed in as a command line argument. Since these are specific to the client launching the app, they can't be pre-configured in the getdown.txt.

Version verification fails silently in case of non 200 (ok) http response

If application is version based, then the request is made to http server to read updated getdown.txt file. And then response result is parsed to read the version config from there (i.e. version=xxx line).

However, a server can reply with any non-OK response (e.g. 301, moved permanently). In this case the body will contain some error text and getdown will try to find version=xxx line there, which obviously won't be there. So it will skip version check.

I think such case can be treated as an exception and at least warning could be logged.

Cache overwrite issues.

I've noticed that the cache gets overwritten during updates and causes already running instances to have faults. To duplicate:

  • Start the first instance of a getdown launched application
  • Update the application on the web server
  • Start a second instance of the application

The new code will be pulled down and overwrite the locally running (cached) version. This will cause anything from lockups to random behaviors in the instances that were running before the update.

Updating a jar while the application is still running

I just changed our application delivery so that getdown is responsible to install the application and keep it up-to-date. Now, I have the following situation:

  1. I run the application via getdown. It opens and everything is fine.
  2. While the application is running, I open another instance of the application. getdown is now running an update because I changed a jar file (by intention).
  3. Back in the previously opened application I issue a command that results in a ClassNotFoundException.

As far as I know this is the expected result if a jar file is being replaced while an application is running. What can be done in order to prevent such situations? I'm on Windows 8.1 if that helps.

I'm still new to getdown, so bear with me if that's a configuration issue or this question has already been asked.

Regards,
-- Thomas

Using resources from different servers

I have a application that uses resources (jars) on a server (in our maintenance). These jars are updated every 3 months or so. I don't want to download these jars and update the getdown app every time.

Is it possible to let getdown download these resources and put it on the classpath?
I believe it worked with Java Web Start.

Other approaches I can use to fix this problem?

What is the digest2.txt file ?

What is the digest2.txt file ? What are the differences with the digest.txt file ? When I have to use it and when the digest.txt ?

Thank you in advance

Reverted condition in buildClassPath

Hello,
It seems that condition for creating Default or Cached ClassPath is reverted. With non or false parameter use_code_cache is created .cache directory and Cached ClassPath for launching:

public static ClassPath buildClassPath (Application app) throws IOException
{
return app.useCodeCache() ? buildDefaultClassPath(app) : buildCachedClassPath(app);
}

Best regards
Jan Olsansky

Classpath needs to be customizable

My app suffers from having a very long classpath (16k characters at last count). Because of this I create a custom-classpath.jar containing the classpath in the manifest. I then put this classpath.jar as the classpath when launching my app. I can't see a way to configure this in the getdown.txt

The end result is that the app cannot launch because it the command line is too long (Windows limits to 8192 chars)

Dynamic appbase

Hi

First of all, thank you very much for a great project. We are targeting it as a replacement of current web start solution.

Our "boxed" app is distributed as an all-in-one server app. Then it runs some HTTP server hosting JNLP file and all jars from that JNLP file. Then on workstations the client for the server app is installed through web start with dynamic set up of the application base depending on the current server's IP address/hostname. Please let me know how this can be achieved with getdown?

First time JVM download does not unpack the JVM with getdown 1.6

Hi,

I'm running into an issue where getdown 1.6 can't seem to unpack a downloaded JVM.

I've traced through the getdown code and it looks to me like a "bug" in the Resource.unpack() method.
I say "bug" because the code looks ok to me, just the behaviour seems to not be the intention.

I am piecing this together through the log and working through the code as it is a bit tricky for me to break into the running JVM.

I think I am reaching Getdown.updateJava() line 645 before an exception is thrown. I can see that the HttpDownloader is pulling down the JVM package into a local file named java_vm.jar_new, yet the Resource.unpack() method is trying to unpack java_vm.jar

It looks like the Resource.unpack() line 262 is (part of) the problem. Which is currently:

return FileUtil.unpackJar(new JarFile(_local), _unpacked);

With any downloaded resource I was expecting something like:

return FileUtil.unpackJar(new JarFile(_localNew), _unpacked);

Unfortunately I don't have easy access to Maven to rebuild a custom .jar right now.
Am I on the right track?

The launcher.log is as follows:

2017/01/19 12:44:22:342 INFO n.a: ------------------ VM Info ------------------
2017/01/19 12:44:22:345 INFO n.a: -- OS Name: Windows 7
2017/01/19 12:44:22:345 INFO n.a: -- OS Arch: amd64
2017/01/19 12:44:22:345 INFO n.a: -- OS Vers: 6.1
2017/01/19 12:44:22:345 INFO n.a: -- Java Vers: 1.8.0_92
2017/01/19 12:44:22:345 INFO n.a: -- Java Home: C:\Program Files\Java\jre1.8.0_92
2017/01/19 12:44:22:346 INFO n.a: -- User Name:
2017/01/19 12:44:22:346 INFO n.a: -- User Home: C:\Users<userid>
2017/01/19 12:44:22:346 INFO n.a: -- Cur dir: C:\Jan\Code\Alice\build\getdown
2017/01/19 12:44:22:346 INFO n.a: ---------------------------------------------
2017/01/19 12:44:22:461 INFO n.a: Failed to find proxy settings in Windows registry [error=java.lang.UnsatisfiedLinkError: no jRegistryKey in java.library.path]
2017/01/19 12:44:22:465 INFO n.a: ---------------- Proxy Info -----------------
2017/01/19 12:44:22:465 INFO n.a: -- Proxy Host: null
2017/01/19 12:44:22:465 INFO n.a: -- Proxy Port: null
2017/01/19 12:44:22:465 INFO n.a: ---------------------------------------------
2017/01/19 12:44:22:496 INFO n.a: Able to lock for updates: true
2017/01/19 12:44:22:498 INFO n.a: Checking Java version [current=1080092, wantMin=1080102, wantMax=0]
2017/01/19 12:44:22:498 INFO n.a: Attempting to update Java VM...
2017/01/19 12:44:23:083 INFO n.a: Downloading 121028811 bytes...
2017/01/19 12:44:23:201 INFO n.a: Downloading resource [url=http://myhostname/.../jres/jre-1.8.0.102-windows-i586.jar, size=121028811]
2017/01/19 12:47:59:333 WARNING n.a: Failed to create JarFile from '.\app\java_vm.jar': java.io.FileNotFoundException: .\app\java_vm.jar (The system cannot find the file specified)
2017/01/19 12:47:59:333 WARNING n.a: getdown() failed.
java.io.IOException: m.java_unpack_failed
at com.threerings.getdown.launcher.Getdown.updateJava(Unknown Source)
at com.threerings.getdown.launcher.Getdown.getdown(Unknown Source)
at com.threerings.getdown.launcher.Getdown.run(Unknown Source)
2017/01/19 12:47:59:335 INFO n.a: Releasing lock`

Note I have obscured some none essential details in the log above.

If I copy a successfully downloaded java_vm.jar_new as java_vm.jar and re-run getdown I do get further (getdown redownloads but uses the renamed file), and it looks like the JVM is unpacked ok. (see below... sadly I run into another issue which is completely unrelated and my fault in not setting up my project very well :))

2017/01/19 16:28:54:353 INFO n.a: Regenerating classes.jsa for .\app\java_vm\bin\javaw.exe... 2017/01/19 16:28:54:401 INFO n.a: Checking Java version [current=1080092, wantMin=1080102, wantMax=0] 2017/01/19 16:28:54:402 INFO n.a: Checking version of unpacked JVM [vers=1080102].

Regards,
Jan

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.