Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Equinox » Start Equinox using Reflection
Start Equinox using Reflection [message #94365] Tue, 07 August 2007 14:05 Go to next message
No real name is currently offline No real nameFriend
Messages: 3
Registered: July 2009
Junior Member
I am trying to start the equinox launcher using reflection. I am detecting the location of the current jar file and calculate the path to the org.eclipse.equinox.launcher.jar file(works!).

I am using System Properties to set the osgi.framework path:
System.getProperties().put("osgi.framework", path+"bin/plugins/org.eclipse.osgi.jar");Then i invoke the Main method(org.eclipse.equinox.launcher.Main.main(args)). This works too:

<i>Install location:
file:/c:/Documents and Settings/Administrator/Application Data/Sun/Java/Deployment/cache/javaws/http/Dowen/P8181/DMcli ent/bin/
Configuration file:
file:/c:/Documents and Settings/Administrator/Application Data/Sun/Java/Deployment/cache/javaws/http/Dowen/P8181/DMcli ent/bin/configuration/config.ini loaded
Configuration location:
file:/c:/Documents and Settings/Administrator/Application Data/Sun/Java/Deployment/cache/javaws/http/Dowen/P8181/DMcli ent/bin/configuration/
Framework located:
file:/C:/Documents and Settings/Administrator/Application Data/Sun/Java/Deployment/cache/javaws/http/Dowen/P8181/DMcli ent/bin/plugins/org.eclipse.osgi.jar
Framework classpath:
file:/C:/Documents and Settings/Administrator/Application Data/Sun/Java/Deployment/cache/javaws/http/Dowen/P8181/DMcli ent/bin/plugins/org.eclipse.osgi.jar
Debug options:
file:/C:/Documents and Settings/Administrator/Application Data/Sun/Java/Deployment/cache/javaws/http/Dowen/P8181/DMcli ent/.options not found
Time to load bundles: 1297</i>

The config.ini contains this:
<i>#Product Runtime Configuration File

osgi.splashPath=platform:/base/
osgi.instance.area=@user.home/.test
osgi.nl=en_US
eclipse.product=myProduct.productId
osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.core.jobs@2:start, org.eclipse.equinox.registry@2:start, org.eclipse.equinox.preferences, org.eclipse.core.contenttype, org.eclipse.core.runtime@2:start, org.eclipse.equinox.app@2:start, org.eclipse.update.configurator@3:start, org.eclipse.core.runtime.compatibility.registry, org.eclipse.core.runtime.compatibility.auth, com.ibm.icu
eof=eof</i>

And thats the problem: I remove all folders from the configuration folder(only config.ini remains there).
If i use the eclipse launcher exe to launch our application, everything works great(if i set osgi.framework in the config.ini), but if i use my class to launch the application i get this errormessage:
<i>
!SESSION 2007-08-07 15:55:40.812 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.5.0_08
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
Command-line arguments: -debug

!ENTRY org.eclipse.equinox.common 4 0 2007-08-07 15:55:43.046
!MESSAGE
!STACK 0
org.osgi.framework.BundleException: The bundle could not be resolved. Reason: Missing Permission: (org.osgi.framework.PackagePermission org.eclipse.osgi.framework.log export,import), Missing Constraint: Import-Package: org.eclipse.osgi.framework.log; version="0.0.0"
at org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.java:305)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.resu me(AbstractBundle.java:350)
at org.eclipse.osgi.framework.internal.core.Framework.resumeBun dle(Framework.java:1118)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.r esumeBundles(StartLevelManager.java:634)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.i ncFWSL(StartLevelManager.java:508)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.d oSetStartLevel(StartLevelManager.java:282)
at org.eclipse.osgi.framework.internal.core.StartLevelManager.d ispatchEvent(StartLevelManager.java:468)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEve nt(EventManager.java:195)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread .run(EventManager.java:297)

!ENTRY org.eclipse.core.jobs 4 0 2007-08-07 15:55:43.062
!MESSAGE
!STACK 0
org.osgi.framework.BundleException: The bundle could not be resolved. Reason: Missing Constraint: Require-Bundle: org.eclipse.equinox.common; bundle-version=" was not resolved.
!SUBENTRY 2 org.eclipse.equinox.common 2 0 2007-08-07 15:55:43.375
!MESSAGE Missing Permission: (org.osgi.framework.PackagePermission org.eclipse.osgi.framework.log export,import)
!SUBENTRY 2 org.eclipse.equinox.common 2 0 2007-08-07 15:55:43.375
!MESSAGE Missing Constraint: Import-Package: org.eclipse.osgi.framework.log; version="0.0.0"
!SUBENTRY 1 org.eclipse.osgi 2 0 2007-08-07 15:55:43.375
!MESSAGE Bundle initial@reference:file:plugins/org.eclipse.core.jobs.jar/ was not resolved.
!SUBENTRY 2 org.eclipse.core.jobs 2 0 2007-08-07 15:55:43.375
!MESSAGE Missing required bundle org.eclipse.equinox.common_[3.2.0,4.0.0).
!SUBENTRY 1 org.eclipse.osgi 2 0 2007-08-07 15:55:43.375
!MESSAGE Bundle initial@reference:file:plugins/org.eclipse.equinox.registry.jar/ [3] was not resolved.
!SUBENTRY 2 org.eclipse.equinox.registry 2 0 2007-08-07 15:55:43.375
!MESSAGE Missing required bundle org.eclipse.equinox.common_[3.2.0,4.0.0).
!SUBENTRY 2 org.eclipse.equinox.registry 2 0 2007-08-07 15:55:43.375
!MESSAGE Missing imported package org.eclipse.core.runtime.jobs_0.0.0.
!SUBENTRY 1 org.eclipse.osgi 2 0 2007-08-07 15:55:43.375
!MESSAGE Bundle initial@reference:file:plugins/org.eclipse.equinox.preferences.jar/ [4] was not resolved.
!SUBENTRY 2 org.eclipse.equinox.preferences 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.equinox.common_[3.2.0,4.0.0).
!SUBENTRY 2 org.eclipse.equinox.preferences 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing optionally required bundle org.eclipse.equinox.registry_[3.2.0,4.0.0).
!SUBENTRY 1 org.eclipse.osgi 2 0 2007-08-07 15:55:43.390
!MESSAGE Bundle initial@reference:file:plugins/org.eclipse.core.contenttype.jar/ [5] was not resolved.
!SUBENTRY 2 org.eclipse.core.contenttype 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.equinox.preferences_[3.2.0,4.0.0).
!SUBENTRY 2 org.eclipse.core.contenttype 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.equinox.registry_[3.2.0,4.0.0).
!SUBENTRY 2 org.eclipse.core.contenttype 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.equinox.common_[3.2.0,4.0.0).
!SUBENTRY 1 org.eclipse.osgi 2 0 2007-08-07 15:55:43.390
!MESSAGE Bundle initial@reference:file:plugins/org.eclipse.core.runtime.jar/ [6] was not resolved.
!SUBENTRY 2 org.eclipse.core.runtime 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.equinox.common_[3.2.0,4.0.0).
!SUBENTRY 2 org.eclipse.core.runtime 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.core.jobs_[3.2.0,4.0.0).
!SUBENTRY 2 org.eclipse.core.runtime 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.equinox.registry_[3.2.0,4.0.0).
!SUBENTRY 2 org.eclipse.core.runtime 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.equinox.preferences_[3.2.0,4.0.0).
!SUBENTRY 2 org.eclipse.core.runtime 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.core.contenttype_[3.2.0,4.0.0).
!SUBENTRY 2 org.eclipse.core.runtime 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing optionally required bundle org.eclipse.core.runtime.compatibility.auth_[3.2.0,4.0.0).
!SUBENTRY 2 org.eclipse.core.runtime 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.equinox.app_[1.0.0,2.0.0).
!SUBENTRY 1 org.eclipse.osgi 2 0 2007-08-07 15:55:43.390
!MESSAGE Bundle initial@reference:file:plugins/org.eclipse.equinox.app.jar/ [7] was not resolved.
!SUBENTRY 2 org.eclipse.equinox.app 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.equinox.registry_[3.2.0,4.0.0).
!SUBENTRY 2 org.eclipse.equinox.app 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.equinox.common_[3.2.0,4.0.0).
!SUBENTRY 2 org.eclipse.equinox.app 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing imported package org.osgi.service.event_1.0.0.
!SUBENTRY 2 org.eclipse.equinox.app 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing imported package org.osgi.service.event_1.0.0.
!SUBENTRY 1 org.eclipse.osgi 2 0 2007-08-07 15:55:43.390
!MESSAGE Bundle initial@reference:file:plugins/org.eclipse.update.configurator.jar/ [8] was not resolved.
!SUBENTRY 2 org.eclipse.update.configurator 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.equinox.common_[3.2.0,4.0.0).
!SUBENTRY 1 org.eclipse.osgi 2 0 2007-08-07 15:55:43.390
!MESSAGE Bundle initial@reference :file:plugins/org.eclipse.core.runtime.compatibility.registr y/ [9] was not resolved.
!SUBENTRY 2 org.eclipse.core.runtime.compatibility.registry 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing host org.eclipse.equinox.registry_[3.3.0,3.5.0).
!SUBENTRY 1 org.eclipse.osgi 2 0 2007-08-07 15:55:43.390
!MESSAGE Bundle initial@reference :file:plugins/org.eclipse.core.runtime.compatibility.auth.ja r/ [10] was not resolved.
!SUBENTRY 2 org.eclipse.core.runtime.compatibility.auth 2 0 2007-08-07 15:55:43.390
!MESSAGE Missing required bundle org.eclipse.equinox.common_[3.2.0,4.0.0).</i>

And here's the funny thing: If i do not delete the folders in the configuration folder and try to launch my application using my java class everything works fine.

Can anybody help me with the problem?
Thanks Simon
Re: Start Equinox using Reflection [message #94416 is a reply to message #94365] Tue, 07 August 2007 14:57 Go to previous messageGo to next message
Thomas Watson is currently offline Thomas WatsonFriend
Messages: 503
Registered: July 2009
Senior Member
Simon Schatka wrote:
> !SESSION 2007-08-07 15:55:40.812 -----------------------------------------------
> eclipse.buildId=unknown
> java.version=1.5.0_08
> java.vendor=Sun Microsystems Inc.
> BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
> Command-line arguments: -debug
>
> !ENTRY org.eclipse.equinox.common 4 0 2007-08-07 15:55:43.046
> !MESSAGE
> !STACK 0
> org.osgi.framework.BundleException: The bundle could not be resolved. Reason: Missing Permission: (org.osgi.framework.PackagePermission org.eclipse.osgi.framework.log export,import), Missing Constraint: Import-Package: org.eclipse.osgi.framework.log; version="0.0.0"
> at org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.java:305)
> at org.eclipse.osgi.framework.internal.core.AbstractBundle.resu me(AbstractBundle.java:350)
> at org.eclipse.osgi.framework.internal.core.Framework.resumeBun dle(Framework.java:1118)
> at org.eclipse.osgi.framework.internal.core.StartLevelManager.r esumeBundles(StartLevelManager.java:634)
> at org.eclipse.osgi.framework.internal.core.StartLevelManager.i ncFWSL(StartLevelManager.java:508)
> at org.eclipse.osgi.framework.internal.core.StartLevelManager.d oSetStartLevel(StartLevelManager.java:282)
> at org.eclipse.osgi.framework.internal.core.StartLevelManager.d ispatchEvent(StartLevelManager.java:468)
> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEve nt(EventManager.java:195)
> at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread .run(EventManager.java:297)
>


This exception makes it look like the exporter (system.bundle in this
case) of the package org.eclipse.osgi.framework.log does not have
permission to export. Is a security manager enabled when you launch
with reflection? If so did you setup a policy to grant the
org.eclipse.osgi jar AllPermissions?

I suspect it works if you launch with the native launcher because there
is no security manager enabled by default. This allows the resolver
cache to be persisted. Then when you relaunch from the cache with
reflection all the bundles are already resolved so the permission check.
But I would still expect lots of other things to fail if the framework
does not have AllPermissions.

Tom.
Re: Start Equinox using Reflection [message #94490 is a reply to message #94416] Tue, 07 August 2007 20:54 Go to previous messageGo to next message
No real name is currently offline No real nameFriend
Messages: 3
Registered: July 2009
Junior Member
I extended the SecurityManager(i had to override a method and i always return instead of throwing an exception. can't remember exactly). i had to do this, because i am using it with java web start and it is impossible to set the security manager to null(or is there a workaround?) where do i have to place the policy file?
Re: Start Equinox using Reflection [message #94536 is a reply to message #94490] Wed, 08 August 2007 06:59 Go to previous message
No real name is currently offline No real nameFriend
Messages: 3
Registered: July 2009
Junior Member
Thank you! It works now.
My problem was: i wrote an application for java web start. A small jar contains the starter and a big jar file contains all necessary files. The starter extracts the big jar file and launches our application(yeah i know its not the normal way jws is used and it is a ugly solution, but we have some plugins, which are not in a jar file, therefore we have to do this). The Problem was: If i launch the WebStartMain the first statement is "System.setSecurityManager(null)". This is not allowed, because the jar file is not on the classpath. I wrote my own SecurityManager to avoid this problem and called the "org.eclipse.equinox.launcher.Main" function instead. But then the troubles began. Now i am just setting the SecurityManager to null in my starter application and everything works fine!

Thanks again for your help
Simon
Previous Topic:com.sun.org.apache.xalan.internal.res
Next Topic:Starting Eclipse workbench
Goto Forum:
  


Current Time: Fri Apr 19 10:18:53 GMT 2024

Powered by FUDForum. Page generated in 0.01478 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top