Access Module Installer in another package
"Thomas Sobieroy" <[email protected]> Sat, 15 Apr 2017 16:52:09 +0200
| Newsgroups | gmane.comp.java.netbeans.modules.openide.devel |
|---|---|
| Message-ID | <[email protected]> |
Hey,
I'm currently working on a project where I need to access a module Installer
from another package. I work in a maven context,
so I generate my manifest.mf in project A (com.mycompany.ideapplication)
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
<manifestFile>MANIFEST.MF</manifestFile>
<manifestEntries>
<Manifest-Version>1.0</Manifest-Version>
<AutoUpdate-Show-In-Client>true</AutoUpdate-Show-In-Client>
<OpenIDE-Module>com.mycompany.ideapplication</OpenIDE-Module>
<OpenIDE-Module-Name>IDE
Application</OpenIDE-Module-Name>
<OpenIDE-Module-Install>de/uos/netbeans/Installer.class</OpenIDE-Module-Inst
all>
<OpenIDE-Module-Specification-Version>1.0</OpenIDE-Module-Specification-Vers
ion>
<OpenIDE-Module-Requires>
org.openide.windows.WindowManager,
</OpenIDE-Module-Requires>
<Class-Path>JavaIDEAPIAbstractionLayer-1.0-SNAPSHOT-jar-with-dependencies.ja
r</Class-Path>
<Archiver-Version>Plexus
Archiver</Archiver-Version>
<Build-Time>${maven.build.timestamp}</Build-Time>
<Build-Host>${agent.name}</Build-Host>
<Build-User>${user.name}</Build-User>
<Build-Maven>Maven
${maven.version}</Build-Maven>
<Build-Java>${java.version}</Build-Java>
<Build-OS>${os.name}</Build-OS>
<Build-Label>${project.version}</Build-Label>
<Build-Path>${basedir}</Build-Path>
</manifestEntries>
</archive>
And I want to call Installer in Project B
(de.uos.JavaIDEAPIAbstractionLayer):
public class Installer extends ModuleInstall {
private PropertyChangeListener editorChangeListener;
private static JTextComponent lastFocused = null;
@Override
public void restored() {
//Will be called when the active editor changes.
editorChangeListener = new PropertyChangeListener() {
(and so on)
I've a dependency in maven to the library containing the installer. The
library itself is no netbeans module.
Adding the library containing the installer to my Class-Path in Manifest.mf
results the following errors:
First f.y.i. I get a WARNING
[org.netbeans.core.startup.InstalledFileLocatorImpl]: module
com.mycompany.ideapplication in
C:\Users\thoma\Documents\OneDrive\Bachelorarbeit\Project\IDEApplication\targ
et\netbeans_clusters\extra does not own modules/xbean-reflect-3.7.jar at
org.netbeans.LocaleVariants.findLogicalPath(LocaleVariants.java:271),
because I copy over dependencies in maven
Then comes a
java.lang.ClassNotFoundException:
org.netbeans.modules.masterfs.MasterURLMapper@ModuleCL@3a71f843[com.mycompan
y.ideapplication]:jar:file:/C:/Users/thoma/Documents/OneDrive/Bachelorarbeit
/Project/IDEApplication/target/netbeans_clusters/extra/modules/org-netbeans-
modules-masterfs-RELEASE82.jar!/ not a subclass of
[email protected]$BootClassLoader@21b8
d17c:jar:file:/C:/Program%20Files/NetBeans%208.2/platform/core/org-openide-f
ilesystems.jar!/
[catch] at
org.openide.util.lookup.MetaInfServicesLookup.search(MetaInfServicesLookup.j
ava:349)
at
org.openide.util.lookup.MetaInfServicesLookup.beforeLookup(MetaInfServicesLo
okup.java:156)
at
org.openide.util.lookup.MetaInfServicesLookup.beforeLookupResult(MetaInfServ
icesLookup.java:135)
at
org.openide.util.lookup.AbstractLookup.lookup(AbstractLookup.java:483)
at
org.openide.util.lookup.ProxyLookup$R.lookupChange(ProxyLookup.java:460)
at
org.openide.util.lookup.ProxyLookup.setData(ProxyLookup.java:313)
at
org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:152)
at
org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:125)
at
org.netbeans.core.startup.MainLookup.changeLookups(MainLookup.java:218)
at
org.netbeans.core.startup.MainLookup.systemClassLoaderChanged(MainLookup.jav
a:118)
at
org.netbeans.core.startup.NbInstaller.classLoaderUp(NbInstaller.java:330)
at
org.netbeans.ModuleManager.enable(ModuleManager.java:1351)
at
org.netbeans.ModuleManager.enable(ModuleManager.java:1170)
at
org.netbeans.core.startup.ModuleList.installNew(ModuleList.java:340)
at
org.netbeans.core.startup.ModuleList.trigger(ModuleList.java:276)
at
org.netbeans.core.startup.ModuleSystem.restore(ModuleSystem.java:301)
at
org.netbeans.core.startup.Main.getModuleSystem(Main.java:181)
at
org.netbeans.core.startup.Main.getModuleSystem(Main.java:150)
at org.netbeans.core.startup.Main.start(Main.java:307)
at
org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:123)
at java.lang.Thread.run(Thread.java:745)
INFO [org.openide.util.lookup.MetaInfServicesLookup]
And then:
java.lang.ClassNotFoundException: Will not load class
org.netbeans.modules.settings.convertors.SerialDataConvertor$Provider
arbitrarily from one of ModuleCL@298638c1[org.netbeans.modules.settings] and
ModuleCL@3a71f843[com.mycompany.ideapplication] starting from
SystemClassLoader[519 modules]; see http://wiki.netbeans.org/DevFaqModuleCCE
at
org.netbeans.ProxyClassLoader.loadClass(ProxyClassLoader.java:204)
at
org.netbeans.ModuleManager$SystemClassLoader.loadClass(ModuleManager.java:77
9)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at
org.netbeans.core.startup.layers.BinaryFS$AttrImpl.findClass(BinaryFS.java:8
48)
at
org.netbeans.core.startup.layers.BinaryFS$AttrImpl.methodValue(BinaryFS.java
:788)
[catch] at
org.netbeans.core.startup.layers.BinaryFS$AttrImpl.getValue(BinaryFS.java:70
3)
at
org.netbeans.core.startup.layers.BinaryFS$BFSBase.getAttribute(BinaryFS.java
:549)
at
org.openide.filesystems.MultiFileObject.getAttribute(MultiFileObject.java:94
4)
at
org.openide.filesystems.MultiFileObject.getAttribute(MultiFileObject.java:87
7)
at
org.openide.filesystems.MultiFileObject.getAttribute(MultiFileObject.java:94
0)
at
org.openide.filesystems.MultiFileObject.getAttribute(MultiFileObject.java:87
7)
at
org.openide.filesystems.MultiFileObject.getAttribute(MultiFileObject.java:79
8)
at
org.openide.loaders.InstanceDataObject$Ser.instanceCreate(InstanceDataObject
.java:1432)
at
org.openide.loaders.InstanceDataObject.instanceCreate(InstanceDataObject.jav
a:846)
at
org.netbeans.modules.openide.loaders.FileEntityResolver.findLookup(FileEntit
yResolver.java:198)
at
org.netbeans.modules.openide.loaders.FileEntityResolver.access$200(FileEntit
yResolver.java:94)
at
org.netbeans.modules.openide.loaders.FileEntityResolver$Lkp.update(FileEntit
yResolver.java:556)
at
org.netbeans.modules.openide.loaders.FileEntityResolver$Lkp.beforeLookup(Fil
eEntityResolver.java:519)
at
org.openide.util.lookup.ProxyLookup.beforeLookup(ProxyLookup.java:209)
at
org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:671)
at
org.openide.util.lookup.ProxyLookup$R.computeResult(ProxyLookup.java:553)
at
org.openide.util.lookup.ProxyLookup$R.allItems(ProxyLookup.java:537)
at
org.openide.util.lookup.ProxyLookup$R.allItems(ProxyLookup.java:532)
at
org.openide.loaders.InstanceDataObject.getCookiesLookup(InstanceDataObject.j
ava:725)
at
org.openide.loaders.InstanceDataObject.getCookiesLookup(InstanceDataObject.j
ava:705)
at
org.openide.loaders.InstanceDataObject.getCookieFromEP(InstanceDataObject.ja
va:622)
at
org.openide.loaders.InstanceDataObject.getCookie(InstanceDataObject.java:652
)
at
org.openide.loaders.FolderInstance.acceptDataObject(FolderInstance.java:417)
at
org.openide.loaders.FolderInstance.defaultProcessObjects(FolderInstance.java
:798)
at
org.openide.loaders.FolderInstance.access$000(FolderInstance.java:103)
at
org.openide.loaders.FolderInstance$1R.init(FolderInstance.java:693)
at
org.openide.loaders.FolderInstance$1R.run(FolderInstance.java:728)
at
org.openide.loaders.FolderLookup.postCreationTask(FolderLookup.java:260)
at
org.openide.loaders.FolderInstance.processObjects(FolderInstance.java:770)
at
org.openide.loaders.FolderInstance$Listener.finished(FolderInstance.java:105
9)
at
org.openide.loaders.FolderList.createBoth(FolderList.java:879)
at
org.openide.loaders.FolderList.getObjects(FolderList.java:564)
at
org.openide.loaders.FolderList.access$600(FolderList.java:77)
at
org.openide.loaders.FolderList$ListTask.computeResult(FolderList.java:963)
at
org.openide.loaders.FolderList$ListTask.run(FolderList.java:939)
at
org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1443)
at
org.openide.util.RequestProcessor$Processor.doEvaluate(RequestProcessor.java
:2111)
at
org.openide.util.RequestProcessor$Task.waitFinished(RequestProcessor.java:16
75)
at
org.openide.loaders.FolderInstance.waitFinished(FolderInstance.java:332)
at
org.openide.loaders.FolderInstance.instanceCreate(FolderInstance.java:281)
at
org.openide.loaders.FolderLookup.instanceForCookie(FolderLookup.java:222)
at
org.openide.loaders.FolderInstance$HoldInstance.instanceCreate(FolderInstanc
e.java:1157)
at
org.openide.loaders.FolderLookup.createInstance(FolderLookup.java:166)
at
org.openide.loaders.FolderInstance.defaultProcessObjectsFinal(FolderInstance
.java:888)
at
org.openide.loaders.FolderInstance$1R.run(FolderInstance.java:730)
at
org.openide.loaders.FolderLookup.postCreationTask(FolderLookup.java:260)
at
org.openide.loaders.FolderInstance.processObjects(FolderInstance.java:770)
at
org.openide.loaders.FolderInstance$Listener.finished(FolderInstance.java:105
9)
at
org.openide.loaders.FolderList.createBoth(FolderList.java:879)
at
org.openide.loaders.FolderList.getObjects(FolderList.java:564)
at
org.openide.loaders.FolderList.access$600(FolderList.java:77)
at
org.openide.loaders.FolderList$ListTask.computeResult(FolderList.java:963)
at
org.openide.loaders.FolderList$ListTask.run(FolderList.java:939)
at
org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1443)
at
org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:68)
at
org.openide.util.lookup.Lookups.executeWith(Lookups.java:303)
at
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2058)
There are a lot of similar exceptions.
Does anyone have a clue how to deal with that? What I want to achieve is to
access the editor object through the jar-library and to set up some
PropertyChangeListener and to start all that from my netbeans module.
Is that somehow possible?
Best regards & thank you very much
Thomas Sobieroy