Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle compileJava任务不断失败_Java_Gradle_Osgi_Bnd - Fatal编程技术网

Gradle compileJava任务不断失败

Gradle compileJava任务不断失败,java,gradle,osgi,bnd,Java,Gradle,Osgi,Bnd,好吧,我已经把头撞在墙上很长一段时间了,现在我甚至不知道要寻找什么来找到解决方案,这是我的文件 格雷德尔先生 //Applying the Gradle BND Plugin for Workspace Builds //https://github.com/bndtools/bnd/blob/master/biz.aQute.bnd.gradle/README.md buildscript { repositories { mavenCentral()

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

格雷德尔先生

    //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'
}
格雷德尔酒店

/*
 * 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\u版本

classpath "biz.aQute.bnd:biz.aQute.bnd.gradle:${bnd_version}"
考虑添加带有以下内容的
gradle.properties
文件:

bnd_version=3.5.0

(或任何合适的版本)。尽我所能重现您的情况,我的示例对我很有用。

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

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


因此,请更改build.gradle文件,使其不将“java”插件应用于根项目,不为根项目设置编译依赖项,并更改Bnd工作区,以便工作区(
cnf
)已配置存储库以访问所需的捆绑包,例如,然后将每个项目的
bnd.bnd
文件设置为在
-buildpath

上具有所需的bundle。我已经按照您所说的那样定义了它,很抱歉,我忘了将其添加到问题中,仍然不起作用(这对我来说是非常棘手的,因为我所依赖的bundle已经在
-testpath
中了。所以它在Eclipse单元测试中运行,而不是在需要在
-buildpath
上运行的Gradle构建中。