我一直在尝试在 Visual Studio Code 中设置 JavaFX-11。
我找到了这篇JavaFX-11 with VSCode 文章,其中解释了如何执行此操作,并按照步骤操作。
但是,我需要通过vmArgs在launch.json文件中添加一个条目来包含 JavaFX SDK 的模块路径:
{
"configurations": [
{
"type": "java",
"name": "CodeLens (Launch) - Main",
"request": "launch",
"vmArgs": "--module-path C:\\Program Files\\Java\\javafx-sdk-11.0.2\\lib --add-modules javafx.controls,javafx.fxml",
"mainClass": "hellofx.Main",
"projectName": "hellofx"
}
]
Run Code Online (Sandbox Code Playgroud)
}
正如您在vmArgs条目中看到的,是我到 JavaFX SDK 的本地路径。但是,当我尝试运行该程序时,出现以下错误:
错误:无法找到或加载主类 Files\Java\javafx-sdk-11.0.2\lib 导致:java.lang.ClassNotFoundException: Files\Java\javafx-sdk-11.0.2\lib
在过去的几个小时里,我一直试图弄清楚为什么它不起作用。我的论点写错了吗?我看到有.jmods文件。我应该下载那些文件吗?还有其他方法可以指定模块路径吗?
值得一提的是,我在 Windows 10 中运行 Visual Studio Code,所以我必须使用转义序列来使用反斜杠。
我正在尝试做一些应该是微不足道的事情,但我面临着一个问题。
将 JavaFx 应用程序从 Java 8 迁移到 Java 11 后,充气城堡安全提供程序将不会加载(也尝试了 Java 12,结果相同)。这是我更新为使用 Java 11 兼容插件的 Maven 项目。它编译得很好,但是在运行时我在终端窗口中得到了这个:
jar .Launcher java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at javafx.graphics/com.sun。 javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464) 在 javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl。 invoke0(Native Method) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 java。base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at java.base/sun.launcher.LauncherHelper$ FXHelper.main(LauncherHelper.java:1051) 由:java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider at .Launcher.main(Launcher.java:14) ... 11 引起:java.lang.ClassNotFoundException:org.bouncycastle.jce。 provider.BouncyCastleProvider 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 在 java。 base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 12 更多
在我的 java.security 中,我将充气城堡提供者作为第一个提供者(也尝试将其作为最后一个提供者,但结果相同)
#
# List of providers and their preference orders (see above):
# …Run Code Online (Sandbox Code Playgroud) 我的构建输出是out/production/classes. Java 文件可以很好地编译成类并被放入out/production/classes/[packageName],但不会复制资源。据我所知,他们应该直接进入out/production/classes目录。
如果相关,我正在使用 Java 11、Spring Boot 和 Gradle。这是我的build.gradle
plugins {
id 'org.springframework.boot' version '2.1.3.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'net.impfox'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
// hidden
}
Run Code Online (Sandbox Code Playgroud)
我的编译器设置:
我的资源没有被复制到输出目录的原因可能是什么,我该如何解决这个问题?
我在 Java 11 的服务器日志中收到以下错误。有什么解决方案吗?
[2019-05-02 18:06:18 IST] [] ERROR com.codahale.metrics.ScheduledReporter [SID= UID= BGCD=] - Exception thrown from Slf4jReporter#report. Exception was suppressed.
java.lang.reflect.InaccessibleObjectException: Unable to make public long com.sun.management.internal.OperatingSystemImpl.getOpenFileDescriptorCount() accessible: module jdk.management does not "opens com.sun.management.internal" to unnamed module @489448ac
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:340)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:198)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:192)
at deployment.myPage.war//com.codahale.metrics.jvm.FileDescriptorRatioGauge.invoke(FileDescriptorRatioGauge.java:48)
at deployment.myPage.war//com.codahale.metrics.jvm.FileDescriptorRatioGauge.getRatio(FileDescriptorRatioGauge.java:35)
at deployment.myPage.war//com.codahale.metrics.RatioGauge.getValue(RatioGauge.java:64)
at deployment.myPage.war//com.codahale.metrics.RatioGauge.getValue(RatioGauge.java:11)
at deployment.myPage.war//com.codahale.metrics.DerivativeGauge.getValue(DerivativeGauge.java:23)
at deployment.myPage.war//com.codahale.metrics.Slf4jReporter.logGauge(Slf4jReporter.java:306)
at deployment.myPage.war//com.codahale.metrics.Slf4jReporter.report(Slf4jReporter.java:220)
at deployment.myPage.war//com.codahale.metrics.ScheduledReporter.report(ScheduledReporter.java:243)
at deployment.myPage.war//com.codahale.metrics.ScheduledReporter$1.run(ScheduledReporter.java:182)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
Run Code Online (Sandbox Code Playgroud) 当使用ant, 调用sun.awt.AppContext工作时,但是使用 AdaptOpenJDK11 使用 IntelliJ 编译的相同代码失败。
sun.awt.AppContext使用Oracle JDK8与 IntelliJ 配合使用sun.awt.AppContext采用AdoptOpenJDK11不适用于IntelliJ尽管 Sun/Oracle 已经警告过一段时间要避免使用这些sun.*包,但Java中的某些功能(错误?)仍然需要它们,而且很奇怪,命令行似乎很高兴。
示例代码:
package test;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import sun.awt.AppContext;
public class Main {
public static void main(String[] args) {
//Update printer list in CUPS immediately
AppContext.getAppContext().put(PrintServiceLookup.class.getDeclaredClasses()[0], null);
PrintService[] printers = PrintServiceLookup.lookupPrintServices(null, null);
for (PrintService p : printers) {
System.out.println(p.getName());
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何配置 IntelliJ 使其表现得像ant并允许访问sun.awt.* …
我通过 Maven 存储库选择了 Apache Commons IO、JSerialComm 和 Ini4J 库。
但是当我尝试通过创建图像时mvn javafx:jlink出现以下错误:
[INFO] --- javafx-maven-plugin:0.0.2:jlink (default-cli) @ JUSBPlotter ---
[WARNING] Required filename-based automodules detected. Please don't publish this project to a public artifact repository!
Error: automatic module cannot be used with jlink: ini4j from file:///root/.m2/repository/org/ini4j/ini4j/0.5.4/ini4j-0.5.4.jar
[ERROR] Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166)
at org.openjfx.JavaFXBaseMojo.executeCommandLine(JavaFXBaseMojo.java:447)
Run Code Online (Sandbox Code Playgroud)
我似乎与此有关:
Error: automatic module cannot be used with jlink:
Run Code Online (Sandbox Code Playgroud)
我的模块文件如下所示:
module org.openjfx.JUSBPlotter {
requires …Run Code Online (Sandbox Code Playgroud) 我已经将 jdk 从 10 升级到 11,所有依赖项都更新为使用最新版本。使用 gradle 包装器进行编译时,它会引发以下错误
symbol: method getId()
TestLombok.java:55: error: cannot find symbol
object.setId(Long.valueOf(getRandomString(5, onlyNumbers)));
我尝试过各种版本的 lombok 但无法解决问题
以前我使用 lombok 1.18.2 和 annotationprocessor 1.18.2
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class User {
@JsonProperty("id")
public Long id;
}
Run Code Online (Sandbox Code Playgroud)
我希望 gradle5.xx 版本可以解决这些问题,但问题仍然存在。如果我们在使用 gradle 包装器版本时遇到任何问题,请告诉我。以下是我的 build.gradle 文件
buildscript {
ext {
springBootVersion = '2.1.1.RELEASE'
}
repositories {
mavenCentral()
jcenter()
maven { url "https://plugins.gradle.org/m2/" }
maven { url "https://jitpack.io" …Run Code Online (Sandbox Code Playgroud) 我有一个带有 JUnit 5 测试的小型 Java 11 示例,结果是:
改变条件边界 ? 幸存下来
主要类:
public final class CheckerUtils
{
private CheckerUtils()
{
super();
}
public static int checkPort(final int port)
{
if (port < 0)
{
throw new IndexOutOfBoundsException("Port number out of range!");
}
return port;
}
}
Run Code Online (Sandbox Code Playgroud)
测试类:
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import org.junit.jupiter.api.Test;
import de.powerstat.security.CheckerUtils;
public final class CheckerUtilsTests
{
@Test
public void checkPortOk()
{
final int port = 1023;
final int resultPort = CheckerUtils.checkPort(port);
assertEquals(port, resultPort, "Port not …Run Code Online (Sandbox Code Playgroud) 我的项目是一个SpringBoot应用程序,其中包含一个java模块。该模块没有open任何包。
模块信息.java
module my.somewhere
{
requires spring.core;
requires spring.context;
requires spring.boot;
// and so on
}
Run Code Online (Sandbox Code Playgroud)
从命令行调用时,应用程序按预期运行mvn clean spring-boot:run。
但是当我尝试从 SpringBootApplication 的 main 方法启动它时,控制台中出现以下错误:(java.lang.IllegalAccessException: module my.somewhere does not open my.somewhere.abc to module spring.core请参阅下面的详细堆栈)。
由于其反射操作,向 Spring 开放一些东西看起来很合理,但我想知道为什么 Maven 能够毫无问题地运行它。
请帮助我了解如何使应用程序以类似的方式Maven 3.6.1运行IntelliJ IDEA 2019.3。
详细堆栈:
org.springframework.cglib.core.CodeGenerationException: java.lang.IllegalAccessException-->module my.somewhere does not open my.somewhere.abc to module spring.core
at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:514) ~[spring-core-5.2.4.RELEASE.jar:na]
at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:363) ~[spring-core-5.2.4.RELEASE.jar:na]
at spring.core@5.2.4.RELEASE/org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:582) ~[spring-core-5.2.4.RELEASE.jar:na]
at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:110) ~[spring-core-5.2.4.RELEASE.jar:na]
at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:108) ~[spring-core-5.2.4.RELEASE.jar:na]
at spring.core@5.2.4.RELEASE/org.springframework.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54) …Run Code Online (Sandbox Code Playgroud) intellij-idea maven-3 spring-boot spring-boot-maven-plugin java-11
创建简单的 javafx 11“hello world”应用程序。\n创建自定义 JRE 时出现错误。
\nuser@user:~/Desktop/javafx/hellofx$ ./run.sh \nError: Hash of java.xml (c043b4c28b897656e2a4d36c92ba2f5d52134bce79643236dd36295e14178be7) differs to expected hash (4e7db7fc941d9f316c4aafe02717b5809ee722be8433d283050365e7fd49331f) recorded in java.base\nRun Code Online (Sandbox Code Playgroud)\n错误代码:
\n$JAVA_HOME/bin/jlink --module-path $PATH_TO_FX_MODS:mods --add-modules hellofx --output hellofx #error\nRun Code Online (Sandbox Code Playgroud)\n操作系统:ubuntu 19.10
\n$java --version\nopenjdk 11.0.6 2020-01-14\nOpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu119.10.1)\nOpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu119.10.1, mixed mode, sharing)\nRun Code Online (Sandbox Code Playgroud)\n$javac --version\njavac 11.0.6\nRun Code Online (Sandbox Code Playgroud)\nuser@user:~/Desktop/javafx/hellofx$ tree\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mods\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 hellofx\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hellofx\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 HelloFX.class\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module-info.class\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 run.sh\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hellofx\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 HelloFX.java\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module-info.java\n\n5 directories, …Run Code Online (Sandbox Code Playgroud) java-11 ×10
java ×6
javafx ×3
maven ×3
gradle ×2
javafx-11 ×2
jlink ×2
maven-3 ×2
adoptopenjdk ×1
bouncycastle ×1
build ×1
gluon ×1
junit5 ×1
lombok ×1
module-path ×1
openjdk-11 ×1
pitest ×1
spring-boot ×1