首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我在使用gradle进行编译时遇到"package javafx.geometry I exist“错误

我在使用gradle进行编译时遇到"package javafx.geometry I exist“错误
EN

Stack Overflow用户
提问于 2019-07-17 06:26:35
回答 1查看 2.7K关注 0票数 2

当我运行gradle " run“任务时,我无法完成编译javafx.XXXXX,因为对于所有的java导入,我得到了许多形式的错误:”error: package java I not exist“。我的测试项目可以很好地执行导入,尽管它没有使用gradle进行编译。

我正在尝试让一个客户端程序"BilliardViewer“在Ubuntu上运行。它已经通过了许多程序员的手,其中一些人可能没有太多的编码经验。我不确定这是gradle问题,还是eclipse问题,是库问题,还是编码问题。我知道JavaFX库已正确安装,因为我可以运行单独的HelloWorld jfx程序。两者之间构建路径的唯一区别是BilliardViewer程序有一些外部依赖项,因为它既使用C++也使用Java。该程序目前在他的Mac上运行,我相信是MacOS Mojave。

我的HelloWorld程序,它可以工作。

代码语言:javascript
运行
复制
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
...

@Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }

不起作用的BilliardViewer程序中的一些代码(Colors.java)

代码语言:javascript
运行
复制
import java.util.Optional;

import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
...

public ColorPicker(final int x, final int y) {
        stage.setX(x);
        stage.setY(y);

        stage.focusedProperty().addListener((obs, wasFocused, isNowFocused) -> {
            if (!isNowFocused) {
                stage.hide();
            }
        });

        stage.setScene(new Scene(grid));
        stage.setTitle("SO COLORFUL");
        grid.setPadding(new Insets(10));

        for (int row = 0; row < ROWS; row++) {
            for (int col = 0; col < COLS; col++) {
                final Color currentColor = color[row][col];

                final Rectangle rect = new Rectangle(RECT_SIZE, RECT_SIZE, currentColor);

                rect.setOnMouseClicked(event -> {
                    selectedColor = Optional.of(currentColor);
                    stage.close();
                });

                Tooltip.install(rect, new Tooltip(Colors.colorMap.get(currentColor).get()));

                grid.add(rect, col, row);
            }
        }
    }

我希望构建至少能够编译java,因为完全相同的代码可以在客户的Mac笔记本电脑上编译得很好。

编辑: build.gradle

代码语言:javascript
运行
复制
apply plugin: 'cpp'
apply plugin: TestingModelBasePlugin
//apply plugin: 'findbugs'

mainClassName = 'billiards.viewer.Main'

repositories {
    jcenter()
}

dependencies {
    // When getting the version number for a dependency, don't go to Maven Central and
    // simply search for the package you want. You will often find many versions of the
    // package, most of which are unofficial or out-of-date. Instead, go to the website
    // of the package, and they will usually give you the correct Maven information there.
    compile 'org.eclipse.collections:eclipse-collections-api:9.2.0'  // All the interfaces
    compile 'org.eclipse.collections:eclipse-collections:9.2.0'  // The actual classes
    compile 'com.google.guava:guava:25.1-jre'
    compile 'org.apache.commons:commons-math3:3.6.1'
    compile 'org.apache.commons:commons-lang3:3.7'  // can remove this now I think?
    compile 'org.apache.commons:commons-io:1.3.2'
    compile 'io.javaslang:javaslang:2.0.5'
    compile 'org.xerial:sqlite-jdbc:3.23.1'
    compile 'net.java.dev.jna:jna:4.5.1'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.2.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.2.0'
}

test {
    useJUnitPlatform()
}

compileJava {
    options.compilerArgs << '-Xlint' << '-Werror'
}

jar {
    baseName = 'billiard-viewer'
    manifest.attributes 'Main-Class': 'billiards.viewer.Main'
}

sourceSets {
    main {
        java {
            srcDir 'src/java'
        }

        //resources {
            //srcDir 'css'
        //}
    }
}

applicationDefaultJvmArgs = ['-server', '-Djna.library.path=./build/libs/backend/shared', '-Xss10000m']

sourceCompatibility = 1.8
targetCompatibility = 1.8

model {

    components {

        backend(NativeLibrarySpec) {

            binaries.all {

                cppCompiler.define "NDEBUG"
                cppCompiler.args '-O3', '-march=native', '-flto', '-ftrapv'
                linker.args '-lgmp', '-lmpfr', '-lmpfi', '-lsqlite3', '-ltbb'

                if (toolChain in Clang) {
                    cppCompiler.args '-Weverything', '-Werror',
                                     '-Wno-padded', '-Wno-comma',
                                     '-Wno-exit-time-destructors', '-Wno-global-constructors',
                                     '-Wno-c++98-compat', '-Wno-c++98-compat-pedantic',
                                     '-std=c++14'
                }

                if (toolChain in Gcc) {
                    cppCompiler.args '-Wall', '-Wextra', '-Wpedantic', '-Werror',
                                     '-Wno-c++11-compat', '-Wno-c++14-compat',
                                     '-std=c++14'
                }

                checkedBy $.tasks.testBackend
            }
        }

        test(NativeExecutableSpec) {

            sources.cpp {
                lib library: 'backend', linkage: 'static'
            }

            binaries.all {

                cppCompiler.define "NDEBUG"
                cppCompiler.args '-O3', '-march=native', '-flto', '-ftrapv'
                linker.args '-lgmp', '-lmpfr', '-lmpfi', '-lboost_unit_test_framework'

                if (toolChain in Clang) {
                    cppCompiler.args '-Weverything', '-Werror',
                                     '-Wno-padded', '-Wno-comma',
                                     '-Wno-disabled-macro-expansion', '-Wno-global-constructors',
                                     '-Wno-c++98-compat', '-Wno-c++98-compat-pedantic',
                                     '-std=c++14'
                }

                if (toolChain in Gcc) {
                    cppCompiler.args '-Wall', '-Wextra', '-Wpedantic', '-Werror',
                                     '-Wno-c++11-compat', '-Wno-c++14-compat',
                                     '-std=c++14'
                }
            }
        }
    }
}

task testBackend(type: Exec, dependsOn: 'testExecutable') {
    commandLine 'build/exe/test/test'

    // save the results here
    //standardOutput = new FileOutputStream('build/test-results/test.out')
    //errorOutput = new FileOutputStream('build/test-results/test.err')
}

// Make sure the C++ code is up to date when running the Java program
run.dependsOn "backendSharedLibrary"
//run.dependsOn "coverExecutable"

run.doFirst {
    // Having this hardcoded isn't the best, put it works for now
    //environment 'LD_PRELOAD', '/usr/local/Cellar/jemalloc/5.0.1/lib/libjemalloc.so.2'
    //commandLine "./test.fish"
}
EN

回答 1

Stack Overflow用户

发布于 2019-07-19 05:34:30

根据stackoverflow的说法,我最终解决了这个问题,在我的eclipse项目中添加了一个gradle.properties文件,该文件告诉gradle在哪里可以找到JDK。因此,为了清楚起见,我必须安装JDK,并将gradle指向该JDK。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57066232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档