... directory in Arch Linux:
[Zsar@Nr7 Games]$ starsector/starsector.sh
starsector/starsector.sh: line 4: ./jre_linux/bin/java: No such file or directory
[Zsar@Nr7 Games]$ cd starsector/
[Zsar@Nr7 starsector]$ ./starsector.sh
<works>
Note that due to the way com.fs.starfarer.StarfarerLauncher is written, simply changing starsector.sh to use the correct path, e.g. via
root_directory=$(dirname $0)
does not suffice:
[Zsar@Nr7 Games]$ starsector/starsector.sh
OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
-XX:AVX3Threshold=0 -XX:-AlignVector -XX:+AlwaysAtomicAccesses -XX:+AlwaysCompileLoopMethods -XX:+AlwaysPreTouch -XX:-BytecodeVerificationLocal -XX:-BytecodeVerificationRemote -XX:CompilerDirectivesFile=starsector/compiler_directives.txt -XX:+DisableExplicitGC -XX:-DontCompileHugeMethods -XX:-EnableThreadSMRStatistics -XX:+EnableVectorAggressiveReboxing -XX:+EnableVectorReboxing -XX:+EnableVectorSupport -XX:+ExtensiveErrorReports -XX:IncreaseFirstTierCompileThresholdAt=99 -XX:InitialHeapSize=2147483648 -XX:InterpreterProfilePercentage=99 -XX:MaxGCPauseMillis=10 -XX:MaxHeapSize=2147483648 -XX:MinHeapSize=2147483648 -XX:NmethodSweepActivity=1 -XX:+ParallelRefProcEnabled -XX:PerMethodRecompilationCutoff=100000 -XX:+PrintCodeCache -XX:+PrintCommandLineFlags -XX:ProfileMaturityPercentage=100 -XX:ReferencesPerThread=0 -XX:ReservedCodeCacheSize=268435456 -XX:+SegmentedCodeCache -XX:ShenandoahAllocationThreshold=85 -XX:ShenandoahGCHeuristics=compact -XX:ShenandoahGCMode=iu -XX:ShenandoahGuaranteedGCInterval=0 -XX:+ShowCodeDetailsInExceptionMessages -XX:+ShowMessageBoxOnError -XX:SweeperThreshold=0.468750 -XX:ThreadPriorityPolicy=1 -XX:ThreadStackSize=4096 -XX:Tier0Delay=1 -XX:Tier0ProfilingStartPercentage=2000 -XX:+TieredCompilation -XX:TieredOldPercentage=10000 -XX:TieredStopAtLevel=4 -XX:TrimNativeHeapInterval=60000 -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:UseAVX=3 -XX:+UseBMI1Instructions -XX:+UseBMI2Instructions -XX:+UseCLMUL -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseCondCardMark -XX:-UseDynamicNumberOfCompilerThreads -XX:+UseFMA -XX:+UseFPUForSpilling -XX:+UseFastStosb -XX:+UseFastUnorderedTimeStamps -XX:UseSSE=4 -XX:+UseSSE42Intrinsics -XX:+UseShenandoahGC -XX:+UseStringDeduplication -XX:+UseUnalignedAccesses -XX:+UseUnalignedLoadStores -XX:+UseVectorCmov -XX:+UseVectorStubs -XX:+UseXMMForArrayCopy -XX:+UseXMMForObjInit -XX:+UseXmmI2D -XX:+UseXmmI2F -XX:+ZeroTLAB
OpenJDK 64-Bit Server VM warning: -XX:ThreadPriorityPolicy=1 may require system level permission, e.g., being the root user. If the necessary permission is not possessed, changes to priority will be silently ignored.
OpenJDK 64-Bit Server VM warning: UseAVX=3 is not supported on this CPU, setting it to UseAVX=2
OpenJDK 64-Bit Server VM warning: UseXMMForObjInit requires SSE2 and unaligned load/stores. Feature is switched off.
2 compiler directives added
WARNING: package java.nio.Buffer.UNSAFE not in java.base
WARNING: package java.awt.Rectangle not in java.desktop
0 [main] INFO com.fs.starfarer.StarfarerLauncher - Starting Starsector 0.98a-RC8 launcher
1 [main] INFO com.fs.starfarer.StarfarerLauncher - Running in /home/Zsar/Games
1 [main] INFO com.fs.starfarer.StarfarerLauncher - OS: Linux 6.14.4-arch1-1
1 [main] INFO com.fs.starfarer.StarfarerLauncher - Java version: 17.0.10 (64-bit)
1 [main] INFO com.fs.starfarer.StarfarerLauncher - Max memory: 2048MB
3 [main] INFO com.fs.starfarer.settings.StarfarerSettings - Loading settings
4 [main] ERROR com.fs.starfarer.StarfarerLauncher - java.lang.RuntimeException: Error loading [data/config/settings.json] resource, not found in [../starfarer.res/res,CLASSPATH]
java.lang.RuntimeException: Error loading [data/config/settings.json] resource, not found in [../starfarer.res/res,CLASSPATH]
at com.fs.util.ooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.Ò00000(Unknown Source)
at com.fs.starfarer.loading.LoadingUtils.super(Unknown Source)
at com.fs.starfarer.settings.StarfarerSettings.ôÒ0000(Unknown Source)
at com.fs.starfarer.settings.StarfarerSettings.private.Object(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.<init>(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.<init>(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.main(Unknown Source)
CodeHeap 'non-profiled nmethods': size=128220Kb used=446Kb max_used=446Kb free=127773Kb
bounds [0x00007974d70c9000, 0x00007974d7339000, 0x00007974dee00000]
CodeHeap 'profiled nmethods': size=128220Kb used=9217Kb max_used=9217Kb free=119002Kb
bounds [0x00007974cee00000, 0x00007974cf710000, 0x00007974d6b37000]
CodeHeap 'non-nmethods': size=5704Kb used=1499Kb max_used=1517Kb free=4204Kb
bounds [0x00007974d6b37000, 0x00007974d6da7000, 0x00007974d70c9000]
total_blobs=2404 nmethods=1728 adapters=586
compilation: enabled
stopped_count=0, restarted_count=0
full_count=0
But what does work well enough is to cd into the game directory before invoking java:
#!/bin/sh
cd "$(dirname "$0")"
./jre_linux/bin/java \
<etc.>