Repository navigation
Fixed ClassNotFoundException on plugin installation/upgrade (issue #146) - #147
Merged
oleg68 merged 1 commit intoJun 1, 2026
Merged
Conversation
…session tab had been previously saved under the old package name
The existing migrateWindowsSettings helper did text replacement on
.settings files, which fixed the XML class attribute but left the
binary serialdata blob intact. That blob (base64-encoded Java
serialization) embeds the class name independently, so
TopComponent$Replacer.readObject still called
Class.forName("io.github.nbclaudecodegui.ui.ClaudeSessionTab")
and threw CNFE.
Fix: replace the text-replacement call with
removeStaleComponentSettings(OLD_PKG), which deletes any .settings
file containing the old package prefix. The window system then falls
back to the module-layer default (correct class name, no stale binary
data).
Resolves: nbplugins#146
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
migrateWindowsSettings(text replacement) withremoveStaleComponentSettings(OLD_PKG)inClaudeCodeInstaller.restored().settingsfiles but left the<serialdata>base64 blob intact; that blob embeds the class name in binary Java serialization, causingTopComponent$Replacer.readObject→Class.forName("io.github.nbclaudecodegui.ui.ClaudeSessionTab")→ CNFEremoveStaleComponentSettings, including a regression test for the serialdata scenarioTest plan
mvn testpasses (13 tests inV1MigrationHelperTest, all green)ClaudeSessionTopComponent.settingscontainingio.github.nbclaudecodegui.ui.ClaudeSessionTabin~/.netbeans/<ver>/config/Windows2Local/Components/, install the NBM, verify no CNFE on startup and the file is deletedFixes #146
🤖 Generated with Claude Code