You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ge...@apache.org on 2026/10/01 12:58:46 UTC
(netbeans-nbpackage) branch issue-133-windows-open-with created (now 7fde0e0)
This is an automated email from the ASF dual-hosted git repository.
geertjanw pushed a change to branch issue-133-windows-open-with
in repository https://gitbox.apache.org/repos/asf/netbeans-nbpackage.git
at 7fde0e0 Set bundled JDK home in netbeans.conf via ${BASEDIR} (#133)
This branch includes the following new commits:
new 7fde0e0 Set bundled JDK home in netbeans.conf via ${BASEDIR} (#133)
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
(netbeans-nbpackage) 01/01: Set bundled JDK home in netbeans.conf via ${BASEDIR} (#133)
Posted by ge...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
geertjanw pushed a commit to branch issue-133-windows-open-with
in repository https://gitbox.apache.org/repos/asf/netbeans-nbpackage.git
commit 7fde0e0f89c78a8081509d6f93b95766cd7dc6aa
Author: Geertjan Wielenga <ge...@apache.org>
AuthorDate: Thu Oct 1 14:58:32 2026 +0200
Set bundled JDK home in netbeans.conf via ${BASEDIR} (#133)
The Windows installer set the bundled JDK via --jdkhome on the Start
Menu shortcut, so launching the executable directly - eg. via
"Open With..." on a file - did not find the bundled JDK and either fell
back to a system JDK or failed to launch.
Write the bundled JDK location into netbeans.conf relative to the
installation using the launcher's ${BASEDIR} token (now supported by the
IDE and platform launchers), setting both jdkhome and netbeans_jdkhome.
This resolves however the application is launched. The shortcut
--jdkhome parameter is kept so packaging of older launchers that lack
${BASEDIR} support is unaffected.
This applies to all packagers that bundle the runtime inside the
application directory; the previous plain relative path was replaced.
---
README.md | 5 +++--
.../org/apache/netbeans/nbpackage/AbstractPackagerTask.java | 13 ++++++++++---
src/test/java/org/apache/netbeans/nbpackage/TestUtils.java | 4 +++-
.../netbeans/nbpackage/innosetup/InnoSetupPackagerTest.java | 5 +++++
4 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 3c86353..bb7a6a5 100644
--- a/README.md
+++ b/README.md
@@ -97,8 +97,9 @@ wine C:\\Program\ Files\ \(x86\)\\Inno\ Setup\ 6\\ISCC.exe $1
### `--type zip`
Mainly for debugging purposes, although can be used to bundle an RCP application
-with local runtime. As the IDE launcher does not yet support relative JDK location,
-this is less useful there.
+with local runtime. When a runtime is bundled, the JDK location is written into
+`netbeans.conf` relative to the installation using the launcher's `${BASEDIR}`
+token, so it is found however the application is launched.
## Building from source
diff --git a/src/main/java/org/apache/netbeans/nbpackage/AbstractPackagerTask.java b/src/main/java/org/apache/netbeans/nbpackage/AbstractPackagerTask.java
index d8e65c1..d94cd81 100644
--- a/src/main/java/org/apache/netbeans/nbpackage/AbstractPackagerTask.java
+++ b/src/main/java/org/apache/netbeans/nbpackage/AbstractPackagerTask.java
@@ -360,9 +360,16 @@ public abstract class AbstractPackagerTask implements Packager.Task {
private void addRuntimeToConf(Path conf, String jdkhome) throws IOException {
var contents = Files.readString(conf);
- contents = contents.replace("#jdkhome=\"/path/to/jdk\"", "jdkhome=\"" + jdkhome + "\"");
- // @TODO - fix this when relative links work with IDE launcher
- // contents = contents.replace("#netbeans_jdkhome=\"/path/to/jdk\"", "netbeans_jdkhome=\"" + jdkhome + "\"");
+ // Point at the bundled JDK relative to the installation using the
+ // launcher's ${BASEDIR} token. Unlike passing --jdkhome via a shortcut,
+ // this resolves however the application is launched - eg. directly or
+ // via "Open With..." on a file. Forward slashes are tolerated on all
+ // platforms including Windows.
+ String basedirHome = "${BASEDIR}/" + jdkhome.replace('\\', '/');
+ contents = contents.replace("#jdkhome=\"/path/to/jdk\"",
+ "jdkhome=\"" + basedirHome + "\"");
+ contents = contents.replace("#netbeans_jdkhome=\"/path/to/jdk\"",
+ "netbeans_jdkhome=\"" + basedirHome + "\"");
Files.writeString(conf, contents);
}
diff --git a/src/test/java/org/apache/netbeans/nbpackage/TestUtils.java b/src/test/java/org/apache/netbeans/nbpackage/TestUtils.java
index 21fc4e1..53ff41e 100644
--- a/src/test/java/org/apache/netbeans/nbpackage/TestUtils.java
+++ b/src/test/java/org/apache/netbeans/nbpackage/TestUtils.java
@@ -49,7 +49,9 @@ public class TestUtils {
Files.createFile(appBin.resolve(branding));
Files.createFile(appBin.resolve(branding + ".exe"));
Files.createFile(appBin.resolve(branding + "64.exe"));
- Files.createFile(appEtc.resolve(branding + ".conf"));
+ Files.writeString(appEtc.resolve(branding + ".conf"),
+ "#jdkhome=\"/path/to/jdk\"\n"
+ + "#netbeans_jdkhome=\"/path/to/jdk\"\n");
Files.createFile(platform.resolve("module"));
return dir;
}
diff --git a/src/test/java/org/apache/netbeans/nbpackage/innosetup/InnoSetupPackagerTest.java b/src/test/java/org/apache/netbeans/nbpackage/innosetup/InnoSetupPackagerTest.java
index 9622a4e..4238f49 100644
--- a/src/test/java/org/apache/netbeans/nbpackage/innosetup/InnoSetupPackagerTest.java
+++ b/src/test/java/org/apache/netbeans/nbpackage/innosetup/InnoSetupPackagerTest.java
@@ -74,6 +74,11 @@ public class InnoSetupPackagerTest {
assertTrue(Files.exists(resolve(image, "app", "bin", "app64.exe")));
assertTrue(Files.exists(resolve(image, "app", "etc", "app.ico")));
assertTrue(Files.exists(resolve(image, "app", "jdk", "bin", "java.exe")));
+ // bundled JDK is referenced in netbeans.conf relative to ${BASEDIR}, so
+ // it is found however the launcher is started (not just via a shortcut)
+ String conf = Files.readString(resolve(image, "app", "etc", "app.conf"));
+ assertTrue(conf.contains("jdkhome=\"${BASEDIR}/jdk\""));
+ assertTrue(conf.contains("netbeans_jdkhome=\"${BASEDIR}/jdk\""));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists