java - GradlecompileJava任务不断失败

标签 java gradle osgi bnd

好吧,我已经用头撞墙很长一段时间了,现在我什至不知道要搜索什么来找到解决方案,这是我的文件

构建.gradle

    //Applying the Gradle BND Plugin for Workspace Builds
    //https://github.com/bndtools/bnd/blob/master/biz.aQute.bnd.gradle/README.md
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "biz.aQute.bnd:biz.aQute.bnd.gradle:${bnd_version}"
    }
}

apply plugin: 'biz.aQute.bnd.workspace'
apply plugin: 'java'

    // Repositorios, aguante Maven Central.
repositories {
    mavenCentral()

    /* Excluded, uso la dependecia de otro lado ahora.
    flatDir {
        dirs '/home/feddericokz/devTools/Equinox/Equinox-Oxygen-1a/plugins'
    }
    */
}

    // Dependencias
dependencies {
    // https://mvnrepository.com/artifact/org.osgi/org.osgi.core
    compile group: 'org.osgi', name: 'org.osgi.core', version: '6.0.0'
}

设置.gradle

/*
 * This settings file was generated by the Gradle 'init' task.
 *
 * The settings file is used to specify which projects to include in your build.
 * In a single project build this file can be empty or even removed.
 *
 * Detailed information about configuring a multi-project build in Gradle can be found
 * in the user guide at https://docs.gradle.org/4.3.1/userguide/multi_project_builds.html
 */

/*
// To declare projects as part of a multi-project build use the 'include' method
include 'shared'
include 'api'
include 'services:webservice'
*/

rootProject.name = 'bndWorkspace'

include 'com.feddericokz.helloworld'

当尝试从命令行运行 gradle jar 时,我收到错误,因为编译器无法找到 osgi 依赖项来编译类

Task :com.feddericokz.helloworld:compileJava FAILED
/home/feddericokz/testingDir/bndWorkspace/com.feddericokz.helloworld/src/com/feddericokz/helloworld/HelloWorldActivator.java:3: error: package org.osgi.framework does not exist
import org.osgi.framework.BundleActivator;
                         ^
/home/feddericokz/testingDir/bndWorkspace/com.feddericokz.helloworld/src/com/feddericokz/helloworld/HelloWorldActivator.java:4: error: package org.osgi.framework does not exist
import org.osgi.framework.BundleContext;
                         ^
/home/feddericokz/testingDir/bndWorkspace/com.feddericokz.helloworld/src/com/feddericokz/helloworld/HelloWorldActivator.java:6: error: cannot find symbol
public class HelloWorldActivator implements BundleActivator {
                                            ^
  symbol: class BundleActivator
/home/feddericokz/testingDir/bndWorkspace/com.feddericokz.helloworld/src/com/feddericokz/helloworld/HelloWorldActivator.java:8: error: cannot find symbol
    public void start(BundleContext bundleContext) throws Exception {
                      ^
  symbol:   class BundleContext
  location: class HelloWorldActivator
/home/feddericokz/testingDir/bndWorkspace/com.feddericokz.helloworld/src/com/feddericokz/helloworld/HelloWorldActivator.java:13: error: cannot find symbol
    public void stop(BundleContext bundleContext) throws Exception {
                     ^
  symbol:   class BundleContext
  location: class HelloWorldActivator
/home/feddericokz/testingDir/bndWorkspace/com.feddericokz.helloworld/src/com/feddericokz/helloworld/HelloWorldActivator.java:7: error: method does not override or implement a method from a supertype
    @Override
    ^
/home/feddericokz/testingDir/bndWorkspace/com.feddericokz.helloworld/src/com/feddericokz/helloworld/HelloWorldActivator.java:12: error: method does not override or implement a method from a supertype
    @Override
    ^
7 errors


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':com.feddericokz.helloworld:compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s
2 actionable tasks: 1 executed, 1 up-to-date

我做错了什么?

编辑:拼写错误

最佳答案

如果您使用 Bnd 工作区模型构建,那么您必须通过每个项目的 bnd.bnd 配置构建路径。使用 -buildpath 文件并指令。然后 Bnd gradle 插件将使用该信息来编写 java 编译的配置。

您的示例显示为根 gradle 项目设置编译依赖项,这是错误的,因为 (1) 您应该使用 -buildpath在项目的bnd.bnd文件和(2)它是在根项目中完成的,这对于像您的 com.feddericokz.helloworld 这样的任何子项目都没有意义。项目。

因此,更改您的 build.gradle 文件,不要将“java”插件应用到根项目,并且不为根项目设置编译依赖项,并更改您的 Bnd 工作区,以便工作区 ( cnf ) 已配置要访问的存储库所需的 bundle ,例如 https://github.com/osgi/enroute.workspace/blob/4070ff6668a1ee79b9b01cfa4caab86869247e7b/cnf/ext/enroute.bnd#L22-L28 ,然后设置每个项目的bnd.bnd文件以在 -buildpath 上拥有所需的 bundle .

关于java - GradlecompileJava任务不断失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47442593/

相关文章:

java - 在个人 java oss 项目中包含高度定制的 java oss 的正确方法?

java - 有效的 Java 项目 66 : Why to synchronize both read and write methods?

在 Android Studio 与 Gradle 中运行时,Android lint 会产生不同的结果

java - 如何知道gradle进程已经结束?

java - 在 Tomcat 中使用来自 Java Web 应用程序的 OSGi 包

java - 将 SSLContext 设置为 org.apache.olingo.client.api.ODataClient

java - 如何将 Java 枚举转换为 Typescript 枚举

android - Android Studio Gradle Analyze已损坏

java - Netbeans 添加新的 Maven 远程存储库

java - 如何使用 Bndtools OSGi 项目创建动态 Web 项目。