【问题标题】:OSGi can't see class in .jar - java.lang.NoClassDefFoundErrorOSGi 在 .jar 中看不到类 - java.lang.NoClassDefFoundError
【发布时间】:2013-06-30 18:34:37
【问题描述】:

我正在尝试将 .jar 安装到 CQ5 OSGi,但每当我尝试使用该包中的代码时,我都会收到此错误:

03.07.2013 08:47:05.650 *ERROR* [0:0:0:0:0:0:0:1 [1372834022135] GET /content/TEST_hartmann/testdfs.html HTTP/1.1] maven.test.dfs [info.hartmann.dfs.impl.Handler] Error during instantiation of the implementation object (java.lang.NoClassDefFoundError: com/emc/documentum/fs/datamodel/core/context/Identity) java.lang.NoClassDefFoundError: com/emc/documentum/fs/datamodel/core/context/Identity

在我的项目中,我使用了 30 多个位于该 jar 文件根目录中的外部(jar)库和 3 个我自己的位于 info/hartmann/dfs/impl 和 info/hartmann/dfs/api 中的类。这是我的 MANIFEST.MF

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven Bundle Plugin
Built-By: 302104
Build-Jdk: 1.7.0_17
Bnd-LastModified: 1372834487861
Bundle-ManifestVersion: 2
Bundle-Name: DFS test
Bundle-SymbolicName: maven.test.dfs
Bundle-Version: 0.0.12.SNAPSHOT
Bundle-ClassPath: .
Embed-Dependency: *;scope=compile|runtime
Embed-Transitive: true
Export-Package: info.hartmann.dfs.api,
 com.emc.documentum.fs.aspects;uses:="org.aspectj.lang",
 com.emc.documentum.fs.datamodel.admin,
 com.emc.documentum.fs.datamodel.admin.usermanagement;uses:="com.emc.documentum.fs.datamodel.core,com.emc.documentum.fs.datamodel.core.properties,com.emc.documentum.fs.datamodel.admin",
 com.emc.documentum.fs.datamodel.ci;uses:="com.emc.documentum.fs.datamodel.core,com.documentum.ci",
 com.emc.documentum.fs.datamodel.collaboration;uses:="com.emc.documentum.fs.datamodel.core",
 com.emc.documentum.fs.datamodel.core,
 com.emc.documentum.fs.datamodel.core.acl,
 com.emc.documentum.fs.datamodel.core.bpm;uses:="com.emc.documentum.fs.datamodel.core",
 com.emc.documentum.fs.datamodel.core.bpm.taskmanagement;uses:="org.example.ws_ht",
 com.emc.documentum.fs.datamodel.core.content;uses:="javax.xml.bind",
 com.emc.documentum.fs.datamodel.core.context;
  uses:="com.emc.documentum.fs.datamodel.core.profiles,
   com.emc.documentum.fs.datamodel.core.properties,
   javax.xml.bind,
   javax.servlet.http",
 com.emc.documentum.fs.datamodel.core.lifecycle;uses:="com.emc.documentum.fs.datamodel.core",
 com.emc.documentum.fs.datamodel.core.profiles,
 com.emc.documentum.fs.datamodel.core.properties,
 com.emc.documentum.fs.datamodel.core.query,
 com.emc.documentum.fs.datamodel.core.schema,
 com.emc.documentum.fs.datamodel.core.vdm;uses:="com.emc.documentum.fs.datamodel.core",
 com.emc.documentum.fs.datamodel.impl,
 com.emc.documentum.fs.datamodel.impl.soap,
 com.emc.documentum.fs.jaxws.compat,
 com.emc.documentum.fs.registry,
 com.emc.documentum.fs.registry.jaxr.impl;uses:="javax.xml.registry.infomodel,com.emc.documentum.fs.registry,javax.xml.registry",
 com.emc.documentum.fs.rt;uses:="javax.xml.bind",
 com.emc.documentum.fs.rt.annotations,
 com.emc.documentum.fs.rt.context;
  uses:="com.emc.documentum.fs.datamodel.core.profiles,
   com.emc.documentum.fs.rt,
   com.emc.documentum.fs.datamodel.core.properties,
   com.emc.documentum.fs.datamodel.core.context",
 com.emc.documentum.fs.rt.context.impl;
  uses:="com.documentum.fc.client,
   com.emc.documentum.fs.datamodel.core.content,
   com.emc.documentum.fs.datamodel.core.properties,
   com.emc.documentum.fs.rt,
   com.emc.documentum.fs.rt.impl,
   com.emc.documentum.fs.datamodel.core.profiles,
   com.documentum.ucf.server.transport,
   com.emc.documentum.fs.rt.services,
   com.emc.documentum.fs.datamodel.core.context,
   com.emc.documentum.fs.rt.impl.servicemodel,
   javax.xml.ws,
   javax.servlet.http,
   com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.rt.context.impl.compat;uses:="com.emc.documentum.fs.rt.context.impl",
 com.emc.documentum.fs.rt.context.impl.reflection,
 com.emc.documentum.fs.rt.handlers;
  uses:="com.emc.documentum.fs.rt.context.impl,
   javax.xml.ws.handler,
   javax.xml.ws.handler.soap,
   com.emc.documentum.fs.rt.impl,
   com.emc.documentum.fs.datamodel.impl.soap,
   com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.rt.impl;
  uses:="com.emc.documentum.fs.rt.context.impl,
   com.documentum.operations.contentpackage,
   com.emc.documentum.fs.datamodel.core.content,
   javax.xml.ws.handler,
   javax.servlet,
   javax.xml.ws,
   javax.servlet.http",
 com.emc.documentum.fs.rt.impl.configuration,
 com.emc.documentum.fs.rt.impl.content;uses:="com.emc.documentum.fs.datamodel.core,com.emc.documentum.fs.datamodel.core.content,com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.rt.impl.handler;uses:="javax.xml.ws.handler,javax.xml.ws.handler.soap",
 com.emc.documentum.fs.rt.impl.notification;
  uses:="com.emc.documentum.fs.datamodel.core.content,
   com.documentum.ucf.common.notification,
   com.documentum.operations,
   com.emc.documentum.fs.rt.impl",
 com.emc.documentum.fs.rt.impl.pipe;
  uses:="com.sun.xml.ws.api.pipe,
   com.sun.xml.ws.api.message,
   com.sun.xml.ws.api.pipe.helper,
   com.sun.xml.ws.api,
   javax.xml.bind,
   com.sun.xml.ws.util.pipe",
 com.emc.documentum.fs.rt.impl.richtext;uses:="com.emc.documentum.fs.datamodel.core,com.documentum.fc.common,com.documentum.services.richtext",
 com.emc.documentum.fs.rt.impl.servicemodel;
  uses:="javax.jws.soap,
   com.emc.documentum.fs.rt,
   javax.jws,
   javax.xml.bind",
 com.emc.documentum.fs.rt.impl.tx;uses:="com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.rt.impl.ucf;
  uses:="com.documentum.operations.contentpackage,
   com.emc.documentum.fs.datamodel.core.content,
   com.documentum.operations,
   com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.rt.impl.ucf.client;
  uses:="com.documentum.operations.contentpackage,
   com.emc.documentum.fs.datamodel.core.content,
   com.documentum.operations,
   com.emc.documentum.fs.rt.impl.ucf",
 com.emc.documentum.fs.rt.impl.ucf.server;
  uses:="com.documentum.operations.contentpackage,
   com.emc.documentum.fs.datamodel.core.content,
   com.documentum.operations,
   com.emc.documentum.fs.rt.impl.ucf,
   com.documentum.ucf.server.contentpackage",
 com.emc.documentum.fs.rt.impl.walker;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.datamodel.core.content,
   com.emc.documentum.fs.rt.impl,
   com.documentum.ucf.server.transport,
   com.documentum.fc.common,
   com.emc.documentum.fs.rt.impl.content",
 com.emc.documentum.fs.rt.services;
  uses:="com.emc.documentum.fs.datamodel.core.content,
   com.emc.documentum.fs.datamodel.core.context,
   javax.xml.bind,
   javax.xml.ws,
   javax.xml.namespace",
 com.emc.documentum.fs.rt.services.impl;uses:="com.emc.documentum.fs.datamodel.core.content,com.emc.documentum.fs.datamodel.core.context,javax.servlet.http",
 com.emc.documentum.fs.rt.ucf;uses:="javax.servlet.http",
 com.emc.documentum.fs.services.admin;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.rt,
   com.emc.documentum.fs.datamodel.admin,
   com.emc.documentum.fs.datamodel.admin.usermanagement,
   javax.xml.bind,
   javax.xml.ws,
   javax.xml.namespace",
 com.emc.documentum.fs.services.admin.client;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.datamodel.admin,
   com.emc.documentum.fs.datamodel.admin.usermanagement,
   com.emc.documentum.fs.rt.impl.servicemodel,
   com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.services.bpm;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.rt,
   com.emc.documentum.fs.datamodel.core.bpm,
   javax.xml.bind,
   javax.xml.ws,
   javax.xml.namespace",
 com.emc.documentum.fs.services.bpm.client;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.datamodel.core.bpm,
   com.emc.documentum.fs.rt.impl.servicemodel,
   com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.services.ci;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.rt,
   javax.xml.bind,
   javax.xml.ws,
   javax.xml.namespace",
 com.emc.documentum.fs.services.ci.client;uses:="com.emc.documentum.fs.datamodel.core,com.emc.documentum.fs.rt.impl.servicemodel,com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.services.collaboration;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.rt,
   javax.xml.bind,
   javax.xml.ws,
   com.emc.documentum.fs.datamodel.collaboration,
   javax.xml.namespace",
 com.emc.documentum.fs.services.collaboration.client;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.rt.impl.servicemodel,
   com.emc.documentum.fs.rt.context,
   com.emc.documentum.fs.datamodel.collaboration",
 com.emc.documentum.fs.services.core;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.datamodel.core.properties,
   com.emc.documentum.fs.rt,
   com.emc.documentum.fs.datamodel.core.query,
   javax.xml.bind,
   javax.xml.ws,
   javax.xml.namespace,
   com.emc.documentum.fs.datamodel.core.schema",
 com.emc.documentum.fs.services.core.acl;
  uses:="com.emc.documentum.fs.datamodel.core.acl,
   com.emc.documentum.fs.rt,
   javax.xml.bind,
   javax.xml.ws,
   javax.xml.namespace",
 com.emc.documentum.fs.services.core.acl.client;uses:="com.emc.documentum.fs.datamodel.core.acl,com.emc.documentum.fs.rt.impl.servicemodel,com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.services.core.client;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.datamodel.core.properties,
   com.emc.documentum.fs.datamodel.core.query,
   com.emc.documentum.fs.rt.impl.servicemodel,
   com.emc.documentum.fs.datamodel.core.schema,
   com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.services.core.lifecycle;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.rt,
   javax.xml.bind,
   javax.xml.ws,
   javax.xml.namespace",
 com.emc.documentum.fs.services.core.lifecycle.client;uses:="com.emc.documentum.fs.datamodel.core,com.emc.documentum.fs.rt.impl.servicemodel,com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.services.core.vdm;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.rt,
   javax.xml.bind,
   javax.xml.ws,
   javax.xml.namespace",
 com.emc.documentum.fs.services.core.vdm.client;uses:="com.emc.documentum.fs.datamodel.core,com.emc.documentum.fs.rt.impl.servicemodel,com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.services.impl.adapters;
  uses:="com.emc.documentum.fs.datamodel.core.profiles,
   com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.datamodel.core.content,
   com.emc.documentum.fs.datamodel.core.properties,
   com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.services.impl.utils;uses:="com.emc.documentum.fs.datamodel.core",
 com.emc.documentum.fs.services.search;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.rt,
   com.emc.documentum.fs.datamodel.core.query,
   javax.xml.bind,
   javax.xml.ws,
   javax.xml.namespace",
 com.emc.documentum.fs.services.search.client;
  uses:="com.emc.documentum.fs.datamodel.core,
   com.emc.documentum.fs.datamodel.core.query,
   com.emc.documentum.fs.rt.impl.servicemodel,
   com.emc.documentum.fs.rt.context",
 com.emc.documentum.fs.tracing;uses:="com.emc.documentum.fs.rt.impl,com.emc.documentum.fs.tracing.core",
 com.emc.documentum.fs.tracing.core
Service-Component: OSGI-INF/info.hartmann.dfs.impl.Handler.xml
Tool: Bnd-2.1.0.20130426-122213

我使用 Apache Maven 创建 jar 包,所以这里是我的 POM.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>maven.test</groupId>
  <artifactId>test-dfs</artifactId>
  <version>0.0.12-SNAPSHOT</version>
  <name>DFS test</name>

  <build>
      <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-scr-plugin</artifactId>
            <version>1.9.0</version>
            <executions>
              <execution>
                <id>generate-scr-scrdescriptor</id>
                <goals>
                  <goal>scr</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
            <plugin>
              <artifactId>maven-jar-plugin</artifactId>
              <configuration>
                <archive>  
                  <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                </archive> 
              </configuration>
            </plugin>  
            <plugin>   
              <groupId>org.apache.felix</groupId>
              <artifactId>maven-bundle-plugin</artifactId>
              <configuration>
                <instructions>
                    <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
                    <Embed-Transitive>true</Embed-Transitive>
                    <Export-Package>${project.exports}</Export-Package>  
                </instructions>
              </configuration>
              <executions>
                <execution>
                  <id>bundle-manifest</id>
                  <phase>process-classes</phase>
                  <goals>    
                    <goal>manifest</goal>
                  </goals>   
                </execution>
              </executions>
            </plugin>
            <plugin>
               <artifactId>maven-assembly-plugin</artifactId>
               <version>2.4</version>
               <configuration>
                  <descriptorRefs>
                     <descriptorRef>jar-with-dependencies</descriptorRef>
                  </descriptorRefs>
               </configuration>
            </plugin>
      </plugins>
  </build>

  <dependencies>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>emc-activation</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/activation.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>emc-aspectjrt</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/aspectjrt.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>emc-collaboration</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/collaboration.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>emc-commons-io</artifactId>
        <version>1.2.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/commons-io-1.2.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>emc-commons-lang</artifactId>
        <version>2.4.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/commons-lang-2.4.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>emc-admin-services-remote</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/emc-admin-services-remote.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>emc-bpm-services-remote</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/emc-bpm-services-remote.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>emc-ci-services-remote</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/emc-ci-services-remote.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>emc-dfs-rt-remote</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/emc-dfs-rt-remote.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>emc-dfs-services-remote</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/emc-dfs-services-remote.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>emc-search-services-remote</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/emc-search-services-remote.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>FastInfoset</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/FastInfoset.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>http</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/http.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>jaxb1-impl</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/jaxb1-impl.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/jaxb-api.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/jaxb-impl.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>jaxws-api</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/jaxws-api.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/jaxws-rt.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>jsr173_api</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/jsr173_api.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>jsr181-api</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/jsr181-api.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>jsr250-api</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/jsr250-api.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>log4j</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/log4j.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>mimepull</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/mimepull.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>resolver</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/resolver.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>saaj-api</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/saaj-api.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>saaj-impl</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/saaj-impl.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>servlet</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/servlet.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>sjsxp</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/sjsxp.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>stax-ex</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/stax-ex.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>streambuffer</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/streambuffer.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.emc</groupId>
        <artifactId>xerces-impl</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/xerces-impl.jar</systemPath>
    </dependency>
    <dependency>
      <!-- scr annotations - for generating component descriptors only -->
      <groupId>org.apache.felix</groupId>
      <artifactId>org.apache.felix.scr.annotations</artifactId>
      <version>1.7.0</version>
      <scope>provided</scope>
    </dependency>



  </dependencies>

  <properties>
    <depl.user>user</depl.user>
    <depl.password>password</depl.password>
    <depl.host>localhost</depl.host>
    <depl.port>4502</depl.port>
  </properties>

</project>

感谢您的帮助

编辑这就是我的 jar 文件的样子

|   activation.jar
|   aspectjrt.jar
|   collaboration.jar
|   commons-io-1.2.jar
|   commons-lang-2.4.jar
|   dfc.properties
|   emc-admin-services-remote.jar
|   emc-bpm-services-remote.jar
|   emc-ci-services-remote.jar
|   emc-collaboration-services-remote.jar
|   emc-dfs-rt-remote.jar
|   emc-dfs-services-remote.jar
|   emc-search-services-remote.jar
|   FastInfoset.jar
|   http.jar
|   jaxb-api.jar
|   jaxb-impl.jar
|   jaxb1-impl.jar
|   jaxws-api.jar
|   jaxws-rt.jar
|   jsr173_api.jar
|   jsr181-api.jar
|   jsr250-api.jar
|   log4j.jar
|   mimepull.jar
|   resolver.jar
|   saaj-api.jar
|   saaj-impl.jar
|   servlet.jar
|   sjsxp.jar
|   stax-ex.jar
|   streambuffer.jar
|   xerces-impl.jar
|   
+---info
|   \---hartmann
|       \---dfs
|           +---api
|           |       HandlerApi.class
|           |       
|           \---impl
|                   Activator.class
|                   Handler.class
|                   
+---META-INF
|   |   MANIFEST.MF
|   |   
|   \---maven
|       \---maven.test
|           \---test-dfs
|                   pom.properties
|                   pom.xml
|                   
\---OSGI-INF
        info.hartmann.dfs.impl.Handler.xml

【问题讨论】:

  • 你的 jar 文件是否包含在你的构建路径中?
  • @JREN “我的 jar 文件”是什么意思?我创建的 jar 或缺少该类的 jar?
  • 您的 jar 中是否真的有库 jar 或者只是位于同一个地方?如果在您的 jar 中,该 AFAIK 将无法与标准类加载器一起使用。如果位于同一个地方,你的 bundle-classpath 是错误的。不了解 CQ5,但您通常在 OSGi 环境中所做的是将库安装为 OSGi 包并使用 Import-Package 来使用它们。
  • 应该包含此类的 jar 文件。只有当您尝试访问在运行时不存在的类时才会抛出 NoClassDefFoundException。所以我假设你的项目中有 jar,但在你的构建路径中没有
  • @eis 我把它们放在一个 jar 文件中。

标签: java maven jar osgi


【解决方案1】:

不知道具体的 CQ5,但在 OSGi 容器中,您应该将库安装为单独的 OSGi 包并使用 Import-Package 将它们放入您的类路径中。

如果它们不支持 osgi,您需要找到 OSGified 版本,使用 bnd 工具将它们 osgified 或使用正确的手工 OSGi 清单文件打包它们。

【讨论】:

    【解决方案2】:

    在清单中,包 info.hartmann.dfs.impl 未列出,bnd(除非明确删除)将这些包列为 Private-Package。我也没有在 POM 中看到您如何包含您的私有包,因为您只使用 project.exports。

    现在错误消息在这种情况下令人困惑......它表明 Handler 类存在但对 documentum API 不可见。不知道发生了什么...

    【讨论】:

    • 我的猜测是 info.hartmann.dfs.impl 是包含在同一个 jar 中的东西,即使没有私有包,也可能发现它带有 bundle-classpath。 Documentum API 在另一个 jar 中,因此常规类加载器无法找到它,因为它没有正确打包。
    猜你喜欢
    • 2014-05-13
    • 2017-10-02
    • 2011-07-08
    • 2021-01-30
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多