gpt4 book ai didi

java - 将 添加到 pom 时类路径为空

转载 作者:搜寻专家 更新时间:2023-11-01 03:11:08 25 4
gpt4 key购买 nike

我正在使用这个简单的 pom.xml使用 maven-bundle-plugin 生成 OSGi 包:

<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>de.test.osgi</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.7</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>

这按预期工作(该项目包含一个公共(public)类,我已验证它可以在包中导出)。现在,如果我添加以下 <configuration>到插件:

<configuration>
<outputDirectory>D:\Test</outputDirectory>
</configuration>

构建失败并出现以下错误:

[INFO] --- maven-bundle-plugin:2.3.7:bundle (default-cli) @ test ---
[WARNING] Bundle de.test.osgi:test:bundle:0.0.1-SNAPSHOT : Classpath is empty. Private-Package and Export-Package can only expand from the classpath when there is one
[WARNING] Bundle de.test.osgi:test:bundle:0.0.1-SNAPSHOT : Instructions in Private-Package, or -testpackages that are never used: .*
Classpath:
[ERROR] Bundle de.test.osgi:test:bundle:0.0.1-SNAPSHOT : The JAR is empty: dot
[ERROR] Error(s) found in bundle configuration
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.891s
[INFO] Finished at: Fri Mar 30 14:49:46 CEST 2012
[INFO] Final Memory: 8M/20M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.felix:maven-bundle-plugin:2.3.7:bundle (default-cli) on project test: Error(s) found in bundle configuration -> [Help 1]

为什么类路径是空的? <outputDirectory> 是什么意思有关系吗?这是一个错误,还是我误解了什么?

编辑使用调试输出运行显示类路径确实与 <outputDirectory> 相同.默认情况下,这是专家 target目录,所以他会在那里找到要包含在包中的类。如果我更改它,它将指向一个不包含要包含的类的目录。令人困惑的是,documentation for the plugin<outputDirectory>是:

The directory for the generated bundles.

这是一个错误吗?

最佳答案

outputDirectory 也是编写编译类的地方 - 关于空类路径“点”的错误是由于给 maven-bundle-plugin 一个空目录。

bundle 插件将 MANIFEST.MF 写入 outputDirectory 位置,这也是它希望为 bundle 找到任何其他元数据(例如 scr 插件的输出)的地方。

你在使用编译器插件吗?如果不是,它看起来像是 bundle 插件中的一个错误,它在调用编译器时不遵守 outputDirectory(但在其他任何地方都遵守)。

正如@nobeh 指出的那样,如果 ${project.build.outputDirectory}outputDirectory 指向相同的位置,您应该没问题。

关于java - 将 <outputDirectory> 添加到 pom 时类路径为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9943392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com