I think I didn't change my manifest. If I change some item, it was only
"Import-Package: org.osgi.framework,org.jdesktop.application"
My actual manifest is:
<manifestcontent>
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 10.0-b23 (Sun Microsystems Inc.)
Main-Class: mis.MISApp
Class-Path: lib/appframework-1.0.3.jar lib/swing-worker-1.1.jar
lib/felix.jar
X-COMMENT: Main-Class will be added automatically by build
Bundle-Name: MIM module
Bundle-Description: My description
Bundle-Vendor: test
Bundle-Version: 0.0.8
Bundle-Activator: mis.MISApp
Export-Package: mis.service
Import-Package: org.osgi.framework,org.jdesktop.application
</manifestcontent>
With this manifest I can get error "org.osgi.framework.BundleException:
R3 imports cannot contain directives."
> Did you change your MIM bundle's manifest from when you first showed it?
>
> I ask because I don't see any directives on your imports, but that is
> what Felix is complaining about.
>
> Your bundle is considered an "R3" bundle because it doesn't include in
> its manifest:
>
> Bundle-ManifestVersion: 2
> Bundle-SymbolicName: my.foo.bundle
>
> It is ok to create an R3 bundle, it should still work, you just can
> use R4 features.
>
> If your manifest still as you listed it, maybe a bug was introduced
> into R3 manifest verification.
>
> -> richard
>
> On 5/21/09 9:32 AM, Matej Pončák wrote:
>> I tried launch it with command:
>>
>> java -classpath bin/felix.jar:../MIS/dist/lib/appframework-1.0.3.jar
>> org.apache.felix.main.Main
>>
>> and .....
>>
>> I think its better:
>>
>> ma...@rompilio:~/NetBeansProjects/Felix$ java -classpath
>> bin/felix.jar:../MIS/dist/lib/appframework-1.0.3.jar
>> org.apache.felix.main.Main
>>
>> Welcome to Felix.
>> =================
>>
>> org.osgi.framework.BundleException: R3 imports cannot contain
>> directives.
>> at
>> org.apache.felix.framework.util.manifestparser.ManifestParser.checkAndNormalizeR3(ManifestParser.java:613)
>>
>> at
>> org.apache.felix.framework.util.manifestparser.ManifestParser.<init>(ManifestParser.java:259)
>>
>> at
>> org.apache.felix.framework.searchpolicy.ModuleImpl.<init>(ModuleImpl.java:155)
>>
>> at
>> org.apache.felix.framework.BundleImpl.createModule(BundleImpl.java:970)
>> at org.apache.felix.framework.BundleImpl.<init>(BundleImpl.java:79)
>> at org.apache.felix.framework.Felix.installBundle(Felix.java:2123)
>> at org.apache.felix.framework.Felix.init(Felix.java:581)
>> at org.apache.felix.framework.Felix.start(Felix.java:672)
>> at org.apache.felix.main.Main.main(Main.java:213)
>> org.osgi.framework.BundleException: R3 imports cannot contain
>> directives.
>> at
>> org.apache.felix.framework.util.manifestparser.ManifestParser.checkAndNormalizeR3(ManifestParser.java:613)
>>
>> at
>> org.apache.felix.framework.util.manifestparser.ManifestParser.<init>(ManifestParser.java:259)
>>
>> at
>> org.apache.felix.framework.searchpolicy.ModuleImpl.<init>(ModuleImpl.java:155)
>>
>> at
>> org.apache.felix.framework.BundleImpl.createModule(BundleImpl.java:970)
>> at org.apache.felix.framework.BundleImpl.<init>(BundleImpl.java:79)
>> at org.apache.felix.framework.Felix.installBundle(Felix.java:2123)
>> at org.apache.felix.framework.Felix.init(Felix.java:581)
>> at org.apache.felix.framework.Felix.start(Felix.java:672)
>> at org.apache.felix.main.Main.main(Main.java:213)
>> ERROR: Unable to re-install
>> file:/home/matej/NetBeansProjects/MIS/dist/MIS.jar
>> (org.osgi.framework.BundleException: R3 imports cannot contain
>> directives.)
>> org.osgi.framework.BundleException: R3 imports cannot contain
>> directives.
>> at
>> org.apache.felix.framework.util.manifestparser.ManifestParser.checkAndNormalizeR3(ManifestParser.java:613)
>>
>> at
>> org.apache.felix.framework.util.manifestparser.ManifestParser.<init>(ManifestParser.java:259)
>>
>> at
>> org.apache.felix.framework.searchpolicy.ModuleImpl.<init>(ModuleImpl.java:155)
>>
>> at
>> org.apache.felix.framework.BundleImpl.createModule(BundleImpl.java:970)
>> at org.apache.felix.framework.BundleImpl.<init>(BundleImpl.java:79)
>> at org.apache.felix.framework.Felix.installBundle(Felix.java:2123)
>> at org.apache.felix.framework.Felix.init(Felix.java:581)
>> at org.apache.felix.framework.Felix.start(Felix.java:672)
>> at org.apache.felix.main.Main.main(Main.java:213)
>> ->
>> ->
>> ->
>> -> 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] [Active ] [ 1] MIM module (0.0.7)
>> -> services 5
>>
>> MIM module (5) provides:
>> ------------------------
>> Language = English
>> objectClass = mis.service.MimService
>> service.id = 26
>> ->
>>
>> Although there is some Errors, it seems to my service is running.
>>
>>
>> I can run my jar file with command "java -jar MIS.jar" successfuly.
>> I expected that felix.jar doesn't change my enviroment settings
>> (classpath). So, do I have to set all my env. (classpath) settings to
>> java command? I expected that Felix appends their own settings, but not
>> overwrite.
>>
>> Thanks a lot for yours help.
>> Can you please help me with actual error?
>> (org.osgi.framework.BundleException: R3 imports cannot contain
>> directives.)
>>
>> Matej
>>
>>>
>>>
>>>> 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]
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
<mailto:[email protected]>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]