[Tool] GD Stash

No, the exe still thinks Java 8 is sufficient, so launches that if it finds it. Will have to change the .exe too, to require Java 17.

A version for Java 17 is attached

GDStash_exe.zip (47.4 KB)

1 Like

oh thx,good to know.
i extra renamed my old java 1.8 folder and the bin folder with an underscore to test. damn, how did it find the java.exe? :slight_smile:

You will have to check that with the Launch4J guys, I just provide the info it needs to generate the starter exe :wink:

1 Like

Hey all - Having an issue

Installation directory = D:\SteamLibrary\steamapps\common\Grim Dawn
Game Directory = C:\Users\myuser\OneDrive\Documents\My Games\Grim Dawn\save
I have Java 20

Getting the following error when I try to Import database

javax.swing.ImageIcon@1b7f1c06	java.nio.MappedByteBuffer.position(I)Ljava/nio/MappedByteBuffer;
java.lang.NoSuchMethodError: java.nio.MappedByteBuffer.position(I)Ljava/nio/MappedByteBuffer;
	at org.gdstash.file.GDMappedByteBuffer.setPosition(GDMappedByteBuffer.java:85)
	at org.gdstash.file.ARCDecompress.getFileParts(ARCDecompress.java:117)
	at org.gdstash.file.ARCDecompress.readFileInfo(ARCDecompress.java:186)
	at org.gdstash.file.ARCDecompress.decompressARCBuffer(ARCDecompress.java:552)
	at org.gdstash.file.ARCDecompress.decompressARC(ARCDecompress.java:521)
	at org.gdstash.file.ARCDecompress.decompress(ARCDecompress.java:509)
	at org.gdstash.file.ARCList.decompress(ARCList.java:116)
	at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:148)
	at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:80)
	at javax.swing.SwingWorker$1.call(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at javax.swing.SwingWorker.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

javax.swing.ImageIcon@1b7f1c06	Extraction of D:\SteamLibrary\steamapps\common\Grim Dawn\gdx2\resources\Text_EN.arc failed
javax.swing.ImageIcon@1b7f1c06	java.lang.NullPointerException
java.lang.NullPointerException
	at org.gdstash.file.ARCDecompress.extractFiles(ARCDecompress.java:638)
	at org.gdstash.file.ARCDecompress.decompressARCBuffer(ARCDecompress.java:553)
	at org.gdstash.file.ARCDecompress.decompressARC(ARCDecompress.java:521)
	at org.gdstash.file.ARCDecompress.decompress(ARCDecompress.java:509)
	at org.gdstash.file.ARCList.decompress(ARCList.java:116)
	at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:148)
	at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:80)
	at javax.swing.SwingWorker$1.call(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at javax.swing.SwingWorker.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

javax.swing.ImageIcon@1b7f1c06	Extraction of D:\SteamLibrary\steamapps\common\Grim Dawn\gdx2\resources\Text_EN.arc failed
javax.swing.ImageIcon@1b7f1c06	java.nio.MappedByteBuffer.position(I)Ljava/nio/MappedByteBuffer;
java.lang.NoSuchMethodError: java.nio.MappedByteBuffer.position(I)Ljava/nio/MappedByteBuffer;
	at org.gdstash.file.GDMappedByteBuffer.setPosition(GDMappedByteBuffer.java:85)
	at org.gdstash.file.ARCDecompress.getFileParts(ARCDecompress.java:117)
	at org.gdstash.file.ARCDecompress.readFileInfo(ARCDecompress.java:186)
	at org.gdstash.file.ARCDecompress.decompressARCBuffer(ARCDecompress.java:552)
	at org.gdstash.file.ARCDecompress.decompressARC(ARCDecompress.java:521)
	at org.gdstash.file.ARCDecompress.decompress(ARCDecompress.java:509)
	at org.gdstash.file.ARCList.decompress(ARCList.java:116)
	at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:148)
	at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:80)
	at javax.swing.SwingWorker$1.call(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at javax.swing.SwingWorker.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

javax.swing.ImageIcon@1b7f1c06	Extraction of D:\SteamLibrary\steamapps\common\Grim Dawn\gdx1\resources\Text_EN.arc failed
javax.swing.ImageIcon@1b7f1c06	java.lang.NullPointerException
java.lang.NullPointerException
	at org.gdstash.file.ARCDecompress.extractFiles(ARCDecompress.java:638)
	at org.gdstash.file.ARCDecompress.decompressARCBuffer(ARCDecompress.java:553)
	at org.gdstash.file.ARCDecompress.decompressARC(ARCDecompress.java:521)
	at org.gdstash.file.ARCDecompress.decompress(ARCDecompress.java:509)
	at org.gdstash.file.ARCList.decompress(ARCList.java:116)
	at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:148)
	at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:80)
	at javax.swing.SwingWorker$1.call(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at javax.swing.SwingWorker.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

javax.swing.ImageIcon@1b7f1c06	Extraction of D:\SteamLibrary\steamapps\common\Grim Dawn\gdx1\resources\Text_EN.arc failed
javax.swing.ImageIcon@1b7f1c06	java.nio.MappedByteBuffer.position(I)Ljava/nio/MappedByteBuffer;
java.lang.NoSuchMethodError: java.nio.MappedByteBuffer.position(I)Ljava/nio/MappedByteBuffer;
	at org.gdstash.file.GDMappedByteBuffer.setPosition(GDMappedByteBuffer.java:85)
	at org.gdstash.file.ARCDecompress.getFileParts(ARCDecompress.java:117)
	at org.gdstash.file.ARCDecompress.readFileInfo(ARCDecompress.java:186)
	at org.gdstash.file.ARCDecompress.decompressARCBuffer(ARCDecompress.java:552)
	at org.gdstash.file.ARCDecompress.decompressARC(ARCDecompress.java:521)
	at org.gdstash.file.ARCDecompress.decompress(ARCDecompress.java:509)
	at org.gdstash.file.ARCList.decompress(ARCList.java:116)
	at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:148)
	at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:80)
	at javax.swing.SwingWorker$1.call(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at javax.swing.SwingWorker.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

javax.swing.ImageIcon@1b7f1c06	Extraction of D:\SteamLibrary\steamapps\common\Grim Dawn\resources\Text_EN.arc failed
javax.swing.ImageIcon@1b7f1c06	java.lang.NullPointerException
java.lang.NullPointerException
	at org.gdstash.file.ARCDecompress.extractFiles(ARCDecompress.java:638)
	at org.gdstash.file.ARCDecompress.decompressARCBuffer(ARCDecompress.java:553)
	at org.gdstash.file.ARCDecompress.decompressARC(ARCDecompress.java:521)
	at org.gdstash.file.ARCDecompress.decompress(ARCDecompress.java:509)
	at org.gdstash.file.ARCList.decompress(ARCList.java:116)
	at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:148)
	at org.gdstash.ui.GDConfigPane$DBImportWorker.doInBackground(GDConfigPane.java:80)
	at javax.swing.SwingWorker$1.call(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at javax.swing.SwingWorker.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

javax.swing.ImageIcon@1b7f1c06	Extraction of D:\SteamLibrary\steamapps\common\Grim Dawn\resources\Text_EN.arc failed

Are you sure that is also being used? Others with Java 20 did not have that problem, but it exists with Java 8. Not sure where it starts occurring, the minimum you should use is 17 and that does not have it.

Can you download the exe a few posts up and use that to start the tool? Does that fix it? If so, I’d say you used a version < 17, even if you have 20 installed

That did it. Thank you so very much.

1 Like

alright, new small issue, sry to bother :sweat_smile:
GDstash is no longer saving settings between using the tool
how/where do i edit that?

Hey @mamba, could you help me with an issue where my stash went inaccessible?

I am using version “GD Stash-2-1-6-0k-1607383142”. After using GD Stash with 1.1.9.8, then [playtest] 1.2.0.0, and then reverting it back to 1.1.9.8, I found it stuck at the loading screen:


(I waited for several minutes, it usually loads within a few seconds.)

I had to shut down GDStash.exe and javaw.exe manually (via Task Manager), to close the loading screen.
Deleting %UserProfile%\GDStash\db\db.lck did not help.
Only when I renamed %UserProfile%\GDStash\db, it would load again (and ask me to import the database).
After importing the database (1.1.9.8 again), all previous contents of my stash were gone.
I noticed that %UserProfile%\GDStash\db\seg0 now contained the same amount of .dat files as %UserProfile%\GDStash\db.old\seg0, of a similar size (926303892 vs. 930886165 bytes).
I added a single new item to the now empty stash, and, through version control of %UserProfile%\GDStash\db, figured out, that ./log/log.ctrl, ./log/log657.dat, ./log/logmirror.ctrl, ./seg0/c400.dat, ./seg0/c4b0.dat and ./seg0/c4c1.dat were modified by that.

So I conclude that my real stash is now stored somewhere inside the files within %UserProfile%\GDStash\db.old.

Is there any way to extract and export my stash from there, or to get GD Stash running again based on that database?
I already tried the latest version of GD Stash, but it also gets stuck at the loading screen.
Patching the game to 1.2.0.0 again, also did not resolve the issue.

Error upon starting gdstash.bat:

>gdstash.bat
Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
        at org.gdstash.ui.character.GDCharDataOverviewPane.adjustUI(GDCharDataOverviewPane.java:103)
        at org.gdstash.ui.character.GDCharDataOverviewPane.<init>(GDCharDataOverviewPane.java:35)
        at org.gdstash.ui.character.GDCharEditTabbedPane.<init>(GDCharEditTabbedPane.java:31)
        at org.gdstash.ui.character.GDCharEditPane.adjustUI(GDCharEditPane.java:268)
        at org.gdstash.ui.character.GDCharEditPane.<init>(GDCharEditPane.java:210)
        at org.gdstash.ui.GDStashFrame.<init>(GDStashFrame.java:954)
        at org.gdstash.ui.GDStashFrame$Starter.run(GDStashFrame.java:78)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
        at java.util.ArrayList.rangeCheck(Unknown Source)
        at java.util.ArrayList.get(Unknown Source)
        at org.gdstash.ui.character.GDCharFactionPane.initReputationLevels(GDCharFactionPane.java:202)
        at org.gdstash.ui.character.GDCharFactionPane.<clinit>(GDCharFactionPane.java:164)
        ... 21 more

You will need to upgrade to the current version, the error you encountered is fixed in it. You can then rename you db.old back to db, which also gets you your items back. Chances are you will need to import the db however.

Since the error is fixed, that seems to be a matter of how you start it. Also get the .exe from a few posts up and use that.

Will release a new package with everything soon, seems no other issues are popping up.

1 Like

Maybe I was remembering this one wrong:

(Or it behaved differently now - possibly I forgot to delete db.lck last time.)
This time it started and I just got a bunch of errors when I tried to import the database with the latest GD Stash version.

So I uninstalled Java 8 and installed Java 20, used your .exe from a few posts ago just in case, and it worked.
I can access my stash again, thank you so much!

Okay, I’m totally confused atm. Checked my Java, it’s v8 and up to date so go to the Java website to find later versions and all I see is this.

image

So where are these later versions you’re all talking about?

must be the wrong java site i think :thinking:
there is a link to it via the gdstash site, which you get in the docs folder of gdstash
GDStash_v171/doc/01_config.html

Strange since this is the official Java site far as I know. Copyright Oracle 2023. :woman_shrugging:

https://www.java.com/en/

And

JDK 20 will receive updates under these terms, until September 2023 when it will be superseded by JDK 21.

:crazy_face:

yea, i think Mamba said 17 was the long support one?
unsure if it’s different

Until September next year for 17 it seems.

“JDK 17 will receive updates under these terms, until September 2024, a year after the release of the next LTS.”

I assume it’s just the x64 Compressed Archive I need to download since that’s the biggest one?

Or is it that I need all 3?

x64 installer is fine

i think it’s just different “packaging”, so one is a zip file, thus smaller compression, other is a binary executable that unpacks in a different way
but all lead to the same unpacked program/files

1 Like

as minecrafter, i may have some java links to provide:

a) Eclipse Temurin is the open source Java SE build based upon OpenJDK (my recommended)

b) Production and Early-Access OpenJDK Builds, from Oracle
https://jdk.java.net/20/

archive:
https://jdk.java.net/archive/

c) Azuls OpenJDK

d) IBMs OpenJ9
“slower and uses totally different flags than any other Java build, but it does consume less memory than OpenJDK-based runtimes.”
https://developer.ibm.com/languages/java/semeru-runtimes/downloads/

e)
for MC state of the art id recommend look into GraalVM, EE and Pro Edition are now merged into free JVM.

yes, they have some short releases that you should not really be using (unless you are a developer and need that feature), and some releases with Long Term Support (LTS), which you should.

The latest LTS is 17, the next one (21) will be one too from my understanding. 18 to 20 disappear about as fast as they appeared

I am a bit confused why they still show Java 8 as the recommended JRE (Java Runtime Environment) download. Seems the newer ones only come as JDK (Java Development Kit).

Might go back to 8, the only thing 17 did was break some stuff anyway, it’s not like I am using the new features. Did not expect anything to break and do not see why they still recommend 8 when apps compiled under a newer release are likely to break… that sounds more like keeping everyone stuck at 8, unless they create in-house apps

Any one works, I’d use .exe or .msi, depending on how you want to install it (not that it really matters), I use .exe