标签: java-10

修补或覆盖核心Java 10类的实现

JFX中存在一个错误,通常在计算屏幕坐标时显示出来 https://bugs.openjdk.java.net/browse/JDK-8194727https://bugs.openjdk.java.net/browse/JDK-8190400

我已将问题跟踪到GeneralTransform3D的实现,这是javajfx运行时的一部分.

我已经向Oracle提交了一个错误报告,但在它被接受,修复并进入发布之前,我需要一种修复我的应用程序的方法.

在java 8中,我能够创建一个包含该类的固定版本的jar并将其安装在lib/ext文件夹中.这似乎有效,JFX实现使用了我自己的impl.

在java 10中,已删除扩展机制.将补丁jar添加到类路径不起作用,因为在类加载过程中为时已晚.

有没有办法在Java 10中覆盖/修补核心java类的实现?

请注意,我没有直接使用此类,它由框架使用

java classloader java-10

14
推荐指数
1
解决办法
407
查看次数

Java 10中的Java 10迁移8.在生产中运行服务

我们希望将所有生产服务从Java 8迁移到Java 10.据我所知,我们可能会面临构建(gradle等),依赖等问题以进行开发.但是当它只是JVM本身,即运行服务时,如果我们只是在生产中安装JVM 10来运行我们的jar服务,我们是否会遇到任何问题?

java jvm java-8 java-10

14
推荐指数
2
解决办法
1121
查看次数

迁移Jersey项目以在jersey.repackaged.org.objectweb.asm.ClassReader中使用Java 10.结果java.lang.IllegalArgumentException.<init>

以前的项目是在Tomcat 8和JDK 8上工作正常但是当我在Tomcat 9和JDK 10上迁移我的项目时,它给出了如下错误:

Oct 05, 2018 11:02:01 AM org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
java.lang.IllegalArgumentException
at jersey.repackaged.org.objectweb.asm.ClassReader.<init>(ClassReader.java:170)
at jersey.repackaged.org.objectweb.asm.ClassReader.<init>(ClassReader.java:153)
at jersey.repackaged.org.objectweb.asm.ClassReader.<init>(ClassReader.java:424)
at org.glassfish.jersey.server.internal.scanning.AnnotationAcceptingListener.process(AnnotationAcceptingListener.java:170)
at org.glassfish.jersey.server.ResourceConfig.scanClasses(ResourceConfig.java:915)
at org.glassfish.jersey.server.ResourceConfig._getClasses(ResourceConfig.java:869)
at org.glassfish.jersey.server.ResourceConfig.getClasses(ResourceConfig.java:775)
at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1206)
at org.glassfish.jersey.server.ResourceConfig$RuntimeConfig.<init>(ResourceConfig.java:1178)
at org.glassfish.jersey.server.ResourceConfig.createRuntimeConfig(ResourceConfig.java:1174)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:345)
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177)
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1124)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1079)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:971)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4829)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5143)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1429)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1429)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
at …
Run Code Online (Sandbox Code Playgroud)

jersey jersey-2.0 java-10 tomcat9

14
推荐指数
1
解决办法
3718
查看次数

java-10中的Collectors.toUnmodifiableList

如何创建Unmodifiable列表/集/映射Collectors.toList/toSet/toMap,因为toList(等)文档为:

返回的List 的类型,可变性,可序列化或线程安全性无法保证

之前的java-10,你必须提供一个FunctionCollectors.collectingAndThen,例如:

 List<Integer> result = Arrays.asList(1, 2, 3, 4)
            .stream()
            .collect(Collectors.collectingAndThen(
                    Collectors.toList(),
                    x -> Collections.unmodifiableList(x)));
Run Code Online (Sandbox Code Playgroud)

java java-stream java-10

13
推荐指数
2
解决办法
537
查看次数

apache tomcat 9.x不使用eclipse和Java 10.0.1

我在我的Windows机器上安装了apache-tomcat- 9.0.7并具有以下环境配置:

echo%JAVA_HOME%

C:\ Program Files\Java\jdk-10.0.1


echo%JRE_HOME%

C:\ Program Files\Java\jre-10.0.1


操作系统:Windows 8 64位


Eclipse版本:Oxygen.3a版本(4.7.3a)


每当我catlina.bat startcmd运行时,服务器在localhost上运行正常但是我无法从eclipse的服务器配置中获取服务器实例.

  1. 在eclipse中定义了一个新服务器并添加了apache-tomact 9.0实例
  2. 点击启动服务器后,我收到以下错误:

    -Djava.endorsed.dirs = C:\ Softwares\apache-tomcat-9.0.7\endorsed不受支持.Endorsed standards and standalone APIs in modular form will be supported via the concept of upgradeable modules.

错误屏幕

解决这个问题的任何方法?

eclipse java-10 tomcat9

13
推荐指数
2
解决办法
1万
查看次数

Java 10 var和捕获变量

我正在阅读JEP 286,但我不明白这一部分:

使用嵌套捕获变量捕获变量和类型会被投射到不提及捕获变量的超类型.此映射将捕获变量替换为其上限,并替换使用有界通配符提示捕获变量的类型参数(然后重复).这保留了传统上有限的捕获变量范围,这些变量仅在单个语句中考虑.

谁能让我在Java代码中具体说明它的含义?

java java-10

12
推荐指数
1
解决办法
636
查看次数

从Map条目初始化Map <String,Object>实例

说我有一些像这样的地图条目:

var a = Map.entry("a", new Object());
var b = Map.entry("b", new Object());
var c = Map.entry("c", new Object());

var m = Map.of(a,b,c);  // error here
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

无法解析方法'(java.util.Map.Entry,java.util.Map.Entry,java.util.Map.Entry)'

我只是想从地图中的条目创建一个新的地图,我该怎么做?问题不在于如何在给定Map.Entry实例的情况下初始化Map.

java hashmap java-10

12
推荐指数
1
解决办法
915
查看次数

错误:java:java.lang.ExceptionInInitializerError IntelliJ

Heyo!

尝试使用JDK 10.0.1和"spring-boot-starter-test"启动Intellij(终极版)时,我遇到了一些麻烦.如果我运行main方法,无论其内容如何,​​无论我是否有任何活动测试,我总是在编译之后收到"Error:java:java.lang.ExceptionInInitializerError",之后运行.

总结一下,这会导致错误

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

现在我假设这与Spring引导测试与JDK 10不兼容有关,虽然我很容易问,任何想法如何解决这个问题?

更新2 要清楚,这是我从Intellij收到的唯一输出

Information:javac 10.0.1 was used to compile java sources
Information:2018-05-14 21:04 - Compilation completed with 1 error and 0 warnings in 2 s 381 ms
Error:java: java.lang.ExceptionInInitializerError
Run Code Online (Sandbox Code Playgroud)

这里构建,版本和依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>10</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional> …
Run Code Online (Sandbox Code Playgroud)

spring-test maven-3 spring-boot java-10

11
推荐指数
2
解决办法
9223
查看次数

java.lang.ClassNotFoundException sun.misc.GC

版本 Java:10.0.1 Tomcat:8.0.36 Ubuntu:18.04(64位)Eclipse:Photon(64位)

错误:当我运行Tomcat服务器时,我发现以下错误.如果可能,请不要告诉我减少版本,因为我喜欢使用最新技术.

    SEVERE: Failed to trigger creation of the GC Daemon thread during Tomcat start to prevent possible memory leaks. This is expected on non-Sun JVMs.
java.lang.ClassNotFoundException: sun.misc.GC
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:291)
at org.apache.catalina.core.JreMemoryLeakPreventionListener.lifecycleEvent(JreMemoryLeakPreventionListener.java:286)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:394)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
at org.apache.catalina.startup.Catalina.load(Catalina.java:580)
at org.apache.catalina.startup.Catalina.load(Catalina.java:603)
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:564)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:310)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)
Run Code Online (Sandbox Code Playgroud)

java eclipse tomcat8 java-10 ubuntu-18.04

11
推荐指数
1
解决办法
4751
查看次数

使用Tomcat 9和Java10停止SpringBoot Web应用程序时的非法反射访问

我正在尝试使用Spring Boot 2进行Java 10开发,但我遇到了一些问题.

该应用程序是一个基于Spring Boot 2的简单webapp.应用程序启动是可以的但是当我停止它时,我收到此警告:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.catalina.loader.WebappClassLoaderBase (file:/C:/Users/CS/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.11/tomcat-embed-core-9.0.11.jar) to field java.io.ObjectStreamClass$Caches.localDescs
WARNING: Please consider reporting this to the maintainers of org.apache.catalina.loader.WebappClassLoaderBase
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Run Code Online (Sandbox Code Playgroud)

如您所见,我已经将嵌入式Tomcat服务器从版本8切换到9.0.11以符合Java模块系统.该应用程序随选项启动--add-opens java.base/java.lang=ALL-UNNAMED

有人知道我为什么收到这条消息吗?

java spring-boot java-10 java-module tomcat9

11
推荐指数
1
解决办法
5103
查看次数