renatsaf opened a new issue, #9441:
URL: https://github.com/apache/netbeans/issues/9441
### Apache NetBeans version
Apache NetBeans 25 / dev (longstanding; affects all current versions)
### What happened
Registering a **GlassFish 8.x Web Profile** install via *Services → Servers
→ Add Server → GlassFish Server* fails: NetBeans reports the installation as
invalid and refuses the directory. The **Full** distribution of the same
version is accepted. Reported downstream at eclipse-ee4j/glassfish#26098.
### Root cause
`ServerWizardIterator.isValidInstall()` (module
`enterprise/glassfish.common`) gates on finding a jar in `modules/` whose name
matches `ServerUtilities.GFV3_JAR_MATCHER`:
```
glassfish(?:-[0-9bSNAPHOT]+(?:\.[0-9]+(?:_[0-9]+|)|).*|).jar
```
This was meant to find the kernel jar `modules/glassfish.jar` (or
`glassfish-<version>.jar`) shipped by GlassFish 3–7.
In **GlassFish 8.x there is no `modules/glassfish.jar`** anymore — the
bootstrap jar moved to `lib/bootstrap/glassfish.jar`, which `getJarName()` (it
only scans `modules/`) never sees. Detection then falls back to matching the
loose regex against whatever else is in `modules/`. Matching jars present
(case-sensitive, as Java matches):
| Distribution | `modules/*.jar` that match |
|---|---|
| Full | `glassfish-batch-commands.jar`, `glassfish-batch-connector.jar` |
| Web Profile | *(none)* |
The Full profile passes only by accident — `glassfish-batch-*.jar` matches
because the char class `[0-9bSNAPHOT]` contains a lowercase `b`
(`glassfish-api.jar`, `glassfish-naming.jar`, etc. do not match). The Web
Profile excludes the Batch feature, so no jar qualifies, `getJarName()` returns
`null`, and the install is rejected.
Note: NetBeans' actual version detection, `ServerUtils.getServerVersion()`
(reads `Bundle-Version` from `modules/common-util.jar`), works for both
profiles. Only the brittle `glassfish*.jar` presence gate fails.
### Steps to reproduce
1. Download Eclipse GlassFish 8.0.x **Web Profile**, unzip.
2. Services → Servers → Add Server → GlassFish Server.
3. Point the wizard at the unzipped directory → "the installation is
invalid".
4. Repeat with the **Full** distribution → accepted.
### Proposed fix
In `ServerWizardIterator.isValidInstall()`, accept
`lib/bootstrap/glassfish.jar` (present in every GF distribution, full and web)
as a fallback when the legacy `modules/glassfish*.jar` is absent.
Backward-compatible with GF 3–7; `config/glassfish.container` check and version
resolution via `getServerVersion()` stay unchanged.
```java
File jar = ServerUtilities.getJarName(glassfishDir.getAbsolutePath(),
ServerUtilities.GFV3_JAR_MATCHER);
if (jar == null || !jar.exists()) {
File bootstrapJar = new File(glassfishDir,
"lib" + File.separator + "bootstrap" + File.separator +
"glassfish.jar"); // NOI18N
if (!bootstrapJar.exists()) {
return null;
}
}
```
I'm happy to open a PR for this.
### Are you willing to submit a pull request?
Yes
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists