当前位置: 首页 > 知识库问答 >
问题:

使用预安装的pax jdbc oracle定制Apache Karaf 4.0.4发行版

濮泳
2023-03-14

我试图建立一个自定义karaf分布与一些预先安装的功能,因为我们没有互联网,我们想部署它。

这是我们的pom:

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
     xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>

<groupId>yolo.name.so</groupId>
<artifactId>karaf</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>karaf-assembly</packaging>

<properties>
    <karaf.version>4.0.4</karaf.version>
    <!-- Karaf Maven Plugin does not have to be same as Karaf Server version
         For example, Karaf Maven Plugin 3.0.2 has bug uploading to password protected Nexus Repo
         So I used Karaf Maven Plugin 3.0.3 to build a Karaf 3.0.2 Server -->
    <karaf.plugin.version>${karaf.version}</karaf.plugin.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.build.reportEncoding>UTF-8</project.build.reportEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>org.apache.karaf.features</groupId>
        <artifactId>framework</artifactId>
        <version>${karaf.version}</version>
        <type>kar</type>
    </dependency>
    <dependency>
        <groupId>org.apache.karaf.features</groupId>
        <artifactId>standard</artifactId>
        <version>${karaf.version}</version>
        <classifier>features</classifier>
        <type>xml</type>
       <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf.karaf</groupId>
        <artifactId>apache-cxf</artifactId>
        <version>3.1.4</version>
        <classifier>features</classifier>
        <type>xml</type>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.ops4j.pax.jdbc</groupId>
        <artifactId>pax-jdbc</artifactId>
        <version>0.7.0</version>
        <scope>provided</scope>
       </dependency>
    <dependency>
        <groupId>org.ops4j.pax.jdbc</groupId>
        <artifactId>pax-jdbc-oracle</artifactId>
        <version>0.7.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.karaf.features</groupId>
        <artifactId>enterprise</artifactId>
        <classifier>features</classifier>
        <type>xml</type>
        <version>${karaf.version}</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.karaf.tooling</groupId>
            <artifactId>karaf-maven-plugin</artifactId>
            <version>${karaf.plugin.version}</version>
            <extensions>true</extensions>
            <configuration>
                <!-- ignoreDependencyFlag is true forces plugin to also
                download feature dependent libraries -->
                <ignoreDependencyFlag>true</ignoreDependencyFlag>
                <finalName>${project.artifactId}</finalName>
                <bootFeatures>
                    <feature>bundle</feature>
                    <feature>config</feature>
                    <feature>diagnostic</feature>
                    <feature>deployer</feature>
                    <feature>feature</feature>
                    <feature>jaas</feature>
                    <feature>shell</feature>
                    <feature>log</feature>
                    <feature>management</feature>
                    <feature>package</feature>
                    <feature>shell-compat</feature>
                    <feature>ssh</feature>
                    <feature>system</feature>
                    <feature>wrap</feature>
                    <feature>instance</feature>
                    <feature>kar</feature>
                    <!-- custom features -->
                    <feature>war</feature>
                    <feature>jdbc</feature>
                    <feature>cxf</feature>
                    <feature>cxf-rs-description-swagger2</feature>
                    <feature>service</feature>
                    <feature>eventadmin</feature>
                </bootFeatures>
                <!-- installedFeatures only installs the libraries in the ${KARAF_HOME}/system directory
                     but the user will have to start it up manually via Karaf command line feature:install
                -->
                <installedFeatures>
                    <feature>pax-jdbc</feature>
                    <feature>pax-jdbc-oracle</feature>
                </installedFeatures>
                <archiveZip>true</archiveZip>
            </configuration>
        </plugin>
    </plugins>
</build>

我们总是得到以下错误:

feature:install pax-jdbc-oracle 
    org.apache.karaf.shell.core[org.apache.karaf.shell.support.ShellUtil] : Exception caught while executing command
    org.osgi.service.resolver.ResolutionException: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=pax-jdbc-oracle; type=karaf.feature; version="[0.7.0,0.7.0]"; filter:="(&(osgi.identity=pax-jdbc-oracle)(type=karaf.feature)(version>=0.7.0)(version<=0.7.0))" [caused by: Unable to resolve pax-jdbc-oracle/0.7.0: missing requirement [pax-jdbc-oracle/0.7.0] osgi.identity; osgi.identity=org.ops4j.pax.jdbc.oracle; type=osgi.bundle; version="[0.7.0,0.7.0]"; resolution:=mandatory [caused by: Unable to resolve org.ops4j.pax.jdbc.oracle/0.7.0: missing requirement [org.ops4j.pax.jdbc.oracle/0.7.0] osgi.wiring.package; filter:="(osgi.wiring.package=oracle.jdbc.pool)"]]
        at org.apache.felix.resolver.ResolutionError.toException(ResolutionError.java:42)
        at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:235)
        at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:158)
        at org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:216)
        at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:263)
        at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1089)
        at org.apache.karaf.features.internal.service.FeaturesServiceImpl$1.call(FeaturesServiceImpl.java:985)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
    Error executing command: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=pax-jdbc-oracle; type=karaf.feature; version="[0.7.0,0.7.0]"; filter:="(&(osgi.identity=pax-jdbc-oracle)(type=karaf.feature)(version>=0.7.0)(version<=0.7.0))" [caused by: Unable to resolve pax-jdbc-oracle/0.7.0: missing requirement [pax-jdbc-oracle/0.7.0] osgi.identity; osgi.identity=org.ops4j.pax.jdbc.oracle; type=osgi.bundle; version="[0.7.0,0.7.0]"; resolution:=mandatory [caused by: Unable to resolve org.ops4j.pax.jdbc.oracle/0.7.0: missing requirement [org.ops4j.pax.jdbc.oracle/0.7.0] osgi.wiring.package; filter:="(osgi.wiring.package=oracle.jdbc.pool)"]]

我们希望预先安装此功能,但不知何故,将其置于bootFeatures或installedFeatures下并不重要。

提供的范围/运行时也不重要。

共有2个答案

端木兴国
2023-03-14

Oracle Maven存储库中没有Oracle JDBC驱动程序和UCP(Java连接池)。

有关从Oracle Maven存储库下载JDBC驱动程序的说明,请参阅以下博客。

洪德寿
2023-03-14

由于许可原因,pax jdbc oracle功能无法打包oracle jdbc驱动程序。您必须提供自己的副本,并将其包含在您的分发中。在maven central中无法访问此驱动程序,没有许可证您无法下载。

请参见:https://ops4j1.jira.com/wiki/display/PAXJDBC/Oracle驱动程序适配器

 类似资料:
  • 后面几章包括如何在安装软件包格式适合的平台上平台安装MySQL。(即执行“二进制安装”)。也可以在多种平台上安装MySQL二进制分发版。关于适合所有平台的软件包的通用安装指令参见2.7节,“在其它类Unix系统中安装MySQL”。 关于二进制分发版的使用和如何获得的详细信息请参见2.1节,“一般安装问题”。

  • 当使用Inno Setup预处理器生成多行输出时,例如我的这些回答: Inno Setup-递归子目录而不创建相同的子目录 将多个源代码行添加到Inno File部分的函数 以编程方式生成Inno安装文件标志 Inno Setup:为文件夹及其子文件夹中的所有文件动态添加组件 在所有文件的源路径之间进行选择 我总是必须使用< code>#pragma parseroption指令切换到C风格的字符

  • 现在如果我用这个命令 它将创建一个具有最新版本(如5.2)的laravel项目,但是如果我想安装一个特定的版本(如5.1版),该怎么办? 更新::我正在寻找laravel安装程序命令,是否有任何选项/参数用于特定版本的安装?

  • 问题内容: 当查看包含小程序的其他人的网页时,如果安装了多个小程序,如何强制Internet Explorer 6.0使用特定的JRE? 问题答案: 如果您是不是在编写网页的人,那么您可以通过Win XP SP2中添加的 “ 管理加载项 IE选项”屏幕禁用不想使用的加载项

  • 我使用命令在我的Mac上安装Java。但是当我运行 时,我收到以下消息: 无法完成操作。找不到 Java 运行时。 有关安装 Java 的信息,请访问 http://www.java.com。我有几个问题: 如何使用HomeBrew安装JRE 我需要安装哪个JRE版本

  • 使用 Vim 的首先肯定要安装 Vim。这节课我们就来学习下如何在自己的电脑上安装 Vim 编辑器。课程中使用的操作系统是 CentOS 8.0 的 Linux 发行版本,Vim 的版本选择的是 8.0 版本,同学们也可以自行选用其他 Linux 的发行版本。 Vim 在大多数的 Linux 发型版本中都是默认安装好的,无需再手动进行安装。同学们可以先查看一下自己的发行版上有没有安装 Vim: 查