标签: java-11

如何在Java 9中解决java.lang.NoClassDefFoundError:javax/xml/bind/JAXBException

我有一些代码使用JAXB API类,它们是作为Java 6/7/8中JDK的一部分提供的.当我使用Java 9运行相同的代码时,在运行时我得到错误,指示无法找到JAXB类.

自Java 6以来,JAXB类已作为JDK的一部分提供,为什么Java 9不再能够找到这些类?

java jaxb java-9 java-10 java-11

718
推荐指数
27
解决办法
46万
查看次数

如何在Windows上安装OpenJDK 11?

在过去,Oracle曾经发布过Windows的可执行安装程序,它将:

  • 解压缩文件
  • 添加指示已安装版本和路径的注册表项
  • 将JRE添加到系统PATH
  • 使用Windows注册卸载程序.

从Java 11开始,Oracle的免费Java版本(Oracle OpenJDK)似乎不包含安装程序.它只是一个包含二进制文件的zip文件.

我们如何在Windows上安装OpenJDK 11,因为上述集成不再存在?他们不是必要的吗?

windows java-11

206
推荐指数
5
解决办法
18万
查看次数

不兼容,因为该组件声明了一个与 Java 11 兼容的组件,而使用者需要一个与 Java 10 兼容的组件

在我的 build.gradle 文件中,我升级了一个依赖项的版本(即:com.db:microservice-commons)。加载 gradle 更改后,我收到以下错误消息:

> Build file 'C:\Projects\Container\mschmidt\mount\booking-service\standalone\build.gradle' line: 50

   > A problem occurred evaluating project ':standalone'.
   > Could not resolve all files for configuration ':standalone:runtimeClasspath'.
   > Could not resolve com.db:microservice-commons:2.4.1.
     Required by:
         project :standalone
         project :standalone > project :service
      > No matching variant of com.db:microservice-commons:2.4.1 was found. The consumer was configured to find a runtime of a library compatible with Java 10, packaged as a jar, preferably optimized for standard JVMs, and its dependencies declared externally but:
          - …
Run Code Online (Sandbox Code Playgroud)

java intellij-idea gradle java-11

119
推荐指数
3
解决办法
14万
查看次数

无法使用Maven编译简单的Java 10/Java 11项目

我有一个简单的Maven项目:

src
??? main
    ??? java
        ??? module-info.java
pom.xml
Run Code Online (Sandbox Code Playgroud)

pom.xml中:

<groupId>org.example</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>example</name>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <release>10</release>
            </configuration>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

当我通过构建项目时mvn -X install -DskipTests=true,它失败了:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile (default-testCompile) on project example: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile failed.
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) …
Run Code Online (Sandbox Code Playgroud)

java maven java-10 module-info java-11

111
推荐指数
6
解决办法
8万
查看次数

Spring Boot 2.6.0 / Spring Fox 3 - 无法启动 bean 'documentationPluginsBootstrapper'

我正在尝试使用OpenJDK 15、Spring Boot 2.6.0、Springfox 3 启动 Spring Boot 项目。

我们正在做一个项目,取代Netty作为 Web 服务器并使用 Jetty 来代替,因为我们不需要非阻塞环境。

在代码中我们主要依赖Reactor API(Flux、Mono),所以我们无法删除org.springframework.boot:spring-boot-starter-webflux依赖。

我在一个新项目中复制了我们遇到的问题:https://github.com/jvacaq/spring-fox

我发现build.gradle文件中的这些行是问题的根源。

compile("org.springframework.boot:spring-boot-starter-web") {
   exclude module: "spring-boot-starter-tomcat"
}
compile("org.springframework.boot:spring-boot-starter-jetty")
Run Code Online (Sandbox Code Playgroud)

这是build.gradle文件:

plugins {
    id 'org.springframework.boot' version '2.6.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web") {
        exclude module: "spring-boot-starter-tomcat"
    }
    compile("org.springframework.boot:spring-boot-starter-jetty")
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'io.projectreactor:reactor-test'
    implementation "io.springfox:springfox-boot-starter:3.0.0" …
Run Code Online (Sandbox Code Playgroud)

java gradle spring-boot springfox java-11

111
推荐指数
5
解决办法
15万
查看次数

为什么Java 11基础Docker镜像如此之大?(的openjdk:11-JRE-苗条)

Java 11被宣布为最新的LTS版本.因此,我们正在尝试基于此Java版本启动新服务.

但是,Java 11的基本Docker镜像远大于Java 8的等效镜像:

(我只考虑每个Java版本的官方OpenJDK最轻量级的图像.)

更深入的挖掘发现了以下"事物":

  • openjdk:11-jre-slim图像使用基本图像debian:sid-slim.这带来了两个问题:

    • 这比60 MB大 alpine:3.8

    • Debian的sid版本是不稳定

  • openjdk-11-jre-headless安装在映像中的包比(运行Docker容器内部)大3倍openjdk8-jre:

所以,现在问题来了:

  • 为什么alpine不再使用Java 11 slim图像的基本映像?

  • 为什么不稳定的sid版本用于LTS Java图像?

  • 为什么OpenJDK 11的纤薄/无头/ JRE封装与类似的OpenJDK 8封装相比如此之大?

    • 什么是在OpenJDK 11中带来135 …

java docker alpine-linux java-11

107
推荐指数
3
解决办法
3万
查看次数

Java 11包javax.xml.bind不存在

我正在尝试使用JAXB将XML数据反序列化为Java内容树,在解组时验证XML数据:

try {
  JAXBContext context = JAXBContext.newInstance("com.acme.foo");
  Unmarshaller unmarshaller = context.createUnmarshaller();
  unmarshaller.setSchema(schema);
  FooObject fooObj = (FooObject) unmarshaller.unmarshal(new File("foo.xml"));
} catch (UnmarshalException ex) {
  ex.printStackTrace();
} catch (JAXBException ex) {
  ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

当我使用Java 8构建项目时,它很好,但使用Java 11构建它失败并出现编译错误:

package javax.xml.bind does not exist
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

java jaxb java-11

99
推荐指数
1
解决办法
9万
查看次数

迁移到 Java 9 或更高版本时是否需要切换到模块?

我们目前正在从 Java 8 迁移到 Java 11。但是,升级我们的服务并没有我们预期的那么痛苦。我们基本上只需要更改我们build.gradle文件中的版本号,服务就可以愉快地启动并运行了。我们升级了库以及使用这些库的(微)服务。直到现在都没有问题。

是否需要实际切换到模块?恕我直言,这会产生不必要的成本。任何建议或进一步阅读材料表示赞赏。

澄清一下,如果在不引入模块的情况下使用 Java 9+ 代码有什么后果吗?它可以例如变得与其他代码不兼容吗?

java java-platform-module-system java-11

93
推荐指数
2
解决办法
9610
查看次数

Java 11中的String trim()和strip()方法之间的区别

在其他更改中,JDK 11为java.lang.String类引入了6种新方法:

  • repeat(int)- 重复String的次数与int参数提供的次数相同
  • lines() - 使用Spliterator延迟提供源字符串中的行
  • isBlank() - 指示String是否为空或仅包含空格字符
  • stripLeading() - 从头开始​​删除空白区域
  • stripTrailing() - 从末端移除空白区域
  • strip() - 从字符串的开头和结尾删除空白区域

特别是,strip()看起来非常相似trim().根据这篇文章, strip*()方法旨在:

String.strip(),String.stripLeading()和String.stripTrailing()方法修剪目标字符串的正面,背面或正面和背面的空白[由Character.isWhiteSpace()确定].

String.trim() JavaDoc声明:

/**
  * Returns a string whose value is this string, with any leading and trailing
  * whitespace removed.
  * ...
  */
Run Code Online (Sandbox Code Playgroud)

这几乎与上面的引用相同.

究竟之间的差别String.trim(),并String.strip()因为Java的11?

java string trim strip java-11

81
推荐指数
4
解决办法
2万
查看次数

Eclipse内部错误"轮询新闻提要"

我在我的MacBook(High Sierra,Java 11)上使用Eclipse(4.9.0)并且此错误有时显示,如果我在另一个应用程序上,错误会创建一个"堆栈",如截图所示,它每次回到Eclipse并关闭此错误都很烦人.有人可以帮我解决这个问题吗?

使用其他应用程序一段时间后出现错误

java eclipse java-11 eclipse-2018-09

63
推荐指数
2
解决办法
5万
查看次数