> 2009/5/21 Matej Pončák <[email protected]>
>
>   
>> Hi.
>>
>> I try to use Felix OSGi with GUI.
>> I have a problem with:
>> org.osgi.framework.BundleException: Unresolved constraint in bundle 5:
>> package; (&(package=org.jdesktop.application)(version>=0.0.0))
>>
>> My bundle is number 5.
>>
>> -> ps
>> START LEVEL 1
>>   ID   State         Level  Name
>> [   0] [Active     ] [    0] System Bundle (1.8.0)
>> [   1] [Active     ] [    1] Apache Felix Shell Service (1.2.0)
>> [   2] [Active     ] [    1] Apache Felix Shell TUI (1.2.0)
>> [   3] [Active     ] [    1] Apache Felix Bundle Repository (1.4.0)
>> [   5] [Installed  ] [    1] MIM module (0.0.7)
>> -> update 5
>> -> start 5
>> org.osgi.framework.BundleException: Unresolved constraint in bundle 5:
>> package; (&(package=org.jdesktop.application)(version>=0.0.0))
>> -> exports 5
>> [5] exports:
>> ------------
>> Nothing
>> -> imports 5
>> [5] imports:
>> ------------
>> Nothing
>> -> headers 5
>>
>> MIM module (5)
>> --------------
>> Main-Class = mis.MISApp
>> Bundle-Activator = mis.MISApp
>> Bundle-Description = My description
>> Export-Package = mis.service
>> Bundle-Version = 0.0.7
>> Created-By = 10.0-b23 (Sun Microsystems Inc.)
>> Manifest-Version = 1.0
>> Bundle-Vendor = test
>> Bundle-Name = MIM module
>> Ant-Version = Apache Ant 1.7.0
>> Class-Path = lib/appframework-1.0.3.jar lib/swing-worker-1.1.jar
>> lib/felix.jar
>> Import-Package = org.osgi.framework,org.jdesktop.application
>> X-COMMENT = Main-Class will be added automatically by build
>> ->
>>
>>
>> I seted this option in my config:
>> # To append packages to the default set of exported system packages,
>> # set this value.
>> org.osgi.framework.system.packages.extra=org.jdesktop.application.*
>>
>>     
>
> can you try this instead:
>
>
> org.osgi.framework.system.packages.extra=org.jdesktop.application,org.jdesktop.application.*
>
> because according to the OSGi spec, a package wildcard of:
>
>    org.foo.*
>
> will only match against sub-packages of org.foo and _not_ org.foo itself
>
> just for reference, in case you think the solution to this would be to use:
>
>    org.foo*
>
> this isn't a valid package wildcard as the "*" has to be on it's own or
> after a "."
>
> ( if you think this is all confusing I agree, but that's the spec'd
> behaviour... )
>   
I tried change
org.osgi.framework.system.packages.extra=org.jdesktop.application.*

to

org.osgi.framework.system.packages.extra=org.jdesktop.application,org.jdesktop.application.*



Here is my output:

-> ps
START LEVEL 1
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (1.8.0)
[   1] [Active     ] [    1] Apache Felix Shell Service (1.2.0)
[   2] [Active     ] [    1] Apache Felix Shell TUI (1.2.0)
[   3] [Active     ] [    1] Apache Felix Bundle Repository (1.4.0)
[   5] [Resolved   ] [    1] MIM module (0.0.7)
-> update 5
-> ps
START LEVEL 1
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (1.8.0)
[   1] [Active     ] [    1] Apache Felix Shell Service (1.2.0)
[   2] [Active     ] [    1] Apache Felix Shell TUI (1.2.0)
[   3] [Active     ] [    1] Apache Felix Bundle Repository (1.4.0)
[   5] [Installed  ] [    1] MIM module (0.0.7)
-> start 5
org.osgi.framework.BundleException: Activator start error in bundle [5].
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1506)
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:779)
    at
org.apache.felix.shell.impl.StartCommandImpl.execute(StartCommandImpl.java:105)
    at
org.apache.felix.shell.impl.Activator$ShellServiceImpl.executeCommand(Activator.java:291)
    at
org.apache.felix.shell.tui.Activator$ShellTuiRunnable.run(Activator.java:177)
    at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.NoClassDefFoundError:
org/jdesktop/application/SingleFrameApplication
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:637)
    at
org.apache.felix.framework.searchpolicy.ModuleImpl$ModuleClassLoader.findClass(ModuleImpl.java:1556)
    at
org.apache.felix.framework.searchpolicy.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:562)
    at
org.apache.felix.framework.searchpolicy.ModuleImpl.access$100(ModuleImpl.java:59)
    at
org.apache.felix.framework.searchpolicy.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1446)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    at
org.apache.felix.framework.searchpolicy.ModuleImpl.getClassByDelegation(ModuleImpl.java:481)
    at
org.apache.felix.framework.Felix.createBundleActivator(Felix.java:3344)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1453)
    ... 5 more
Caused by: java.lang.ClassNotFoundException:
org.jdesktop.application.SingleFrameApplication
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    at
org.apache.felix.framework.ExtensionManager$ExtensionManagerModule.getClassByDelegation(ExtensionManager.java:653)
    at
org.apache.felix.framework.searchpolicy.R4Wire.getClass(R4Wire.java:108)
    at
org.apache.felix.framework.searchpolicy.ModuleImpl.searchImports(ModuleImpl.java:1184)
    at
org.apache.felix.framework.searchpolicy.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:557)
    at
org.apache.felix.framework.searchpolicy.ModuleImpl.access$100(ModuleImpl.java:59)
    at
org.apache.felix.framework.searchpolicy.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1446)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)
    ... 15 more
java.lang.NoClassDefFoundError:
org/jdesktop/application/SingleFrameApplication
-> headers 5

MIM module (5)
--------------
Main-Class = mis.MISApp
Bundle-Activator = mis.MISApp
Bundle-Description = My description
Export-Package = mis.service
Bundle-Version = 0.0.7
Created-By = 10.0-b23 (Sun Microsystems Inc.)
Manifest-Version = 1.0
Bundle-Vendor = test
Bundle-Name = MIM module
Ant-Version = Apache Ant 1.7.0
Class-Path = lib/appframework-1.0.3.jar lib/swing-worker-1.1.jar
lib/felix.jar
Import-Package = org.osgi.framework,org.jdesktop.application
X-COMMENT = Main-Class will be added automatically by build
-> exports 5
[5] exports:
------------
mis.service; version=0.0.0
-> imports 5
[5] imports:
------------
org.osgi.framework; version=1.4.0 -> org.apache.felix.framework [0]
org.jdesktop.application; version=0.0.0 -> org.apache.felix.framework [0]
->


Any another ideas?

Matej

> And my Java file is:
>   
>> <filecontent>
>> /*
>>  * MISApp.java
>>  */
>>
>> package mis;
>>
>> import org.jdesktop.application.Application;
>> import org.jdesktop.application.SingleFrameApplication;
>> import org.osgi.framework.BundleActivator;
>> import org.osgi.framework.BundleContext;
>> import org.osgi.framework.ServiceListener;
>> import org.osgi.framework.ServiceEvent;
>> import java.util.Properties;
>> import mis.service.MimService;
>>
>>
>>
>> /**
>>  * The main class of the application.
>>  */
>> public class MISApp extends SingleFrameApplication implements
>> BundleActivator {
>>
>>    public void start(BundleContext context)
>>    {
>>        Properties props = new Properties();
>>        props.put("Language", "English");
>>        context.registerService(
>>            MimService.class.getName(), new MimServiceImpl(), props);
>>    }
>>
>>
>>    public void stop(BundleContext context)
>>    {
>>        context=null;
>>        // NOTE: The service is automatically unregistered.
>>    }
>>
>>
>>    private static class MimServiceImpl implements MimService
>>    {
>>        // The set of words contained in the dictionary.
>>        String[] m_dictionary =
>>            { "welcome", "to", "the", "osgi", "tutorial" };
>>
>>        /**
>>         * Implements DictionaryService.checkWord(). Determines
>>         * if the passed in word is contained in the dictionary.
>>         * @param word the word to be checked.
>>         * @return true if the word is in the dictionary,
>>         *         false otherwise.
>>        **/
>>        public void setMenuItem(String word)
>>        {
>>            word = word.toLowerCase();
>>
>>            System.out.println("Prislo taketo slovo:" + word);
>>           /* // This is very inefficient
>>            for (int i = 0; i < m_dictionary.length; i++)
>>            {
>>                if (m_dictionary[i].equals(word))
>>                {
>>                    return true;
>>                }
>>            }
>>            return false;
>>            */
>>        }
>>    }
>>
>>
>>
>>    /**
>>     * At startup create and show the main frame of the application.
>>     */
>>    @Override protected void startup() {
>>        show(new MISView(this));
>>    }
>>
>>    /**
>>     * This method is to initialize the specified window by injecting
>> resources.
>>     * Windows shown in our application come fully initialized from the GUI
>>     * builder, so this additional configuration is not needed.
>>     */
>>    @Override protected void configureWindow(java.awt.Window root) {
>>    }
>>
>>    /**
>>     * A convenient static getter for the application instance.
>>     * @return the instance of MISApp
>>     */
>>    public static MISApp getApplication() {
>>        return Application.getInstance(MISApp.class);
>>    }
>>
>>    /**
>>     * Main method launching the application.
>>     */
>>    public static void main(String[] args) {
>>        launch(MISApp.class, args);
>>    }
>> }
>>
>> </filecontent>
>>
>>
>> When I want to run my application with command
>> java -jar MIS.jar
>> it works fine.
>>
>> But when I try to run it in Felix prompt it doesn't run.
>>
>> I tried to search in mail-archive, but it didn't help.
>>
>> Thanks for all suggestions.
>>
>> Matej
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>>     
>
>
>   

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to