Karaf / Maven - невозможно запустить пакет - невозможно решить: отсутствует требование osgi.wiring.package - PullRequest
0 голосов
/ 31 марта 2020

Я не могу запустить пакет в Karaf (версия 4.2.8).

Пакет построен с использованием maven и импортирует https://mvnrepository.com/artifact/commons-codec/commons-codec/1.9

pom . xml

<?xml version="1.0" encoding="UTF-8"?>
<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>Apache-Camel</groupId>
  <artifactId>apacheCamel</artifactId>
  <version>1.0-SNAPSHOT</version>


  <packaging>bundle</packaging>

  <properties>
    <java.version>11</java.version>
  </properties>


  <dependencies>


    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

    <!-- SLF4J Bridge -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>2.11.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-gson -->
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-gson</artifactId>
      <version>3.1.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
    <dependency>
      <groupId>javax.ws.rs</groupId>
      <artifactId>javax.ws.rs-api</artifactId>
      <version>2.1.1</version>
    </dependency>

    <dependency>
      <groupId>javax.xml.ws</groupId>
      <artifactId>jaxws-api</artifactId>
      <version>2.3.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
      <version>1.1.3</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-http -->
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-http</artifactId>
      <version>3.1.0</version>
      <scope>compile</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-http -->
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-cxf</artifactId>
      <version>3.1.0</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-jaxb</artifactId>
      <version>3.1.0</version>
      <scope>compile</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-core -->
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-core</artifactId>
      <version>3.3.5</version>
    </dependency>


    <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-frontend-jaxws</artifactId>
      <version>3.3.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-jackson -->
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-jackson</artifactId>
      <version>3.1.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-jackson -->
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-jacksonxml</artifactId>
      <version>3.1.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-core -->
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-core</artifactId>
      <version>3.1.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-main -->
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-main</artifactId>
      <version>3.1.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.3</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-bindings-soap -->
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-bindings-soap</artifactId>
      <version>3.2.1</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>


      <plugin>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-codegen-plugin</artifactId>
        <version>3.3.5</version>
        <executions>
          <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
              <sourceRoot>src/main/java</sourceRoot>
                <wsdlOption>
                  <wsdl>
                    http://localhost:8080/cc/ws/gw/surepath/cc/integration/dms/SurePathDocumentAPI?WSDL
                  </wsdl>
                  <extraargs>
                    <extraarg>-p</extraarg>
                    <extraarg>guidewireAPI</extraarg>
                    <extraarg>-client</extraarg>
                  </extraargs>
                </wsdlOption>
              </wsdlOptions>
            </configuration>
            <goals>
              <goal>wsdl2java</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>11</source>
          <target>11</target>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-Name>${project.artifactId}</Bundle-Name>
            <Bundle-SymbolicName>ArchiveDocument-osgi</Bundle-SymbolicName>
            <Import-Package>!com.google.gson,!javax.xml.ws,!javax.xml.soap,!commons-codec,*</Import-Package>
            <Embed-Dependency>gson</Embed-Dependency>
            <Embed-Dependency>jaxws-api,javax.xml.soap.soap-api,commons-codec</Embed-Dependency>
            <Implementation-Title>Archive Document OSGi</Implementation-Title>
            <Implementation-Version>${project.version}</Implementation-Version>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

когда я запускаю команду bundle:start 218 (сгенерированный идентификатор пакета), я получаю ошибку enter image description here enter image description here

Я решил подобные проблемы, такие как gson, встраивая эти библиотеки как простую jar-зависимость не-OSGi, ссылаясь на Karaf / Maven - Невозможно решить: отсутствует требование osgi.wiring.package

<Import-Package>!com.google.gson,!javax.xml.ws,!javax.xml.soap,!commons-codec,*</Import-Package>
        <Embed-Dependency>gson</Embed-Dependency>
        <Embed-Dependency>jaxws-api,javax.xml.soap.soap-api,commons-codec</Embed-Dependency>

однако, я обнаружил, что появилось больше проблем с зависимостями - код общего пользования c, чувствую, что не имеет смысла добавлять их для встраивания тега зависимости один за другим.

Есть ли лучший способ решить эти проблемы.

...