标签: java-11

将JAXWS应用程序从java 8迁移到java 11

我在java 10+上寻找org.apache.cxf:cxf-spring-boot-starter-jaxws与jaxws-api/jaxws-ri的兼容组合.

我们的应用程序在java 8上运行良好.另外在java 9和10上使用--add-modules = java.se.ee.

但是,当我删除此选项并添加以下依赖项:

compile group: 'javax.xml.ws', name: 'jaxws-api', version: '2.3.0'
compile group: 'com.sun.xml.ws', name: 'jaxws-ri', version: '2.3.0.2', ext: 'pom'
compile group: 'com.sun.xml.ws', name: 'jaxws-rt', version: '2.3.0.2', ext: 'pom'
Run Code Online (Sandbox Code Playgroud)

公共依赖项(在java 9/10或java 8中使用/不使用--add-modules):

compile('org.apache.cxf:cxf-spring-boot-starter-jaxws:3.2.6')
Run Code Online (Sandbox Code Playgroud)

我变得:

Caused by: java.lang.NoSuchMethodError: javax.jws.WebMethod.exclude()Z
    at org.apache.cxf.jaxws.support.JaxWsServiceConfiguration.isOperation(JaxWsServiceConfiguration.java:190)
    at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.isValidMethod(ReflectionServiceFactoryBean.java:1962)
    at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.createInterface(ReflectionServiceFactoryBean.java:999)
    at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:461)
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:695)
    at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:530)
    at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:263)
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:199)
    at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:103)
    at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:168)
    at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211)
    at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:460)
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:338)
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:255)
    at .....
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at …
Run Code Online (Sandbox Code Playgroud)

java soap spring-boot java-11

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

无法在intellij中运行java 11示例程序

public class First {
  public static void main(String[] args) {
    System.out.println("Hello Java 11");
  }
}
Run Code Online (Sandbox Code Playgroud)

我试图用intellij在Java 11中运行上面的程序.但低于错误.

Information:javac 11 was used to compile java sources
Information:Internal caches are corrupted or have outdated format, forcing project rebuild: Module 'eleven-lab' production: java.net.MalformedURLException: unknown protocol: jrt
Information:25/09/18, 6:58 PM - Compilation completed with 1 error and 0 warnings in 4s 516ms
Error:Internal error: (java.net.MalformedURLException) unknown protocol: jrt
java.net.MalformedURLException: unknown protocol: jrt
    at java.net.URL.<init>(URL.java:421)
    at java.net.URL.<init>(URL.java:310)
    at java.net.URL.<init>(URL.java:333)
    at com.intellij.compiler.instrumentation.InstrumentationClassFinder.createJDKPlatformUrl(InstrumentationClassFinder.java:61)
    at org.jetbrains.jps.incremental.instrumentation.ClassProcessingBuilder.createInstrumentationClassFinder(ClassProcessingBuilder.java:125)
    at org.jetbrains.jps.incremental.instrumentation.ClassProcessingBuilder.build(ClassProcessingBuilder.java:93) …
Run Code Online (Sandbox Code Playgroud)

java intellij-idea java-11

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

允许Java JDK 11 HttpClient的不安全的HTTPS连接

有时需要允许不安全的HTTPS连接,例如在一些应该与任何站点一起使用的Web爬行应用程序中.我在旧的HttpsURLConnection API中使用了一个这样的解决方案,最近被JDK 11中的新HttpClient API取代了.使用这个新API允许不安全的HTTPS连接(自签名或过期证书)的方法是什么?

UPD:我尝试的代码(在Kotlin中,但直接映射到Java):

    val trustAllCerts = arrayOf<TrustManager>(object: X509TrustManager {
        override fun getAcceptedIssuers(): Array<X509Certificate>? = null
        override fun checkClientTrusted(certs: Array<X509Certificate>, authType: String) {}
        override fun checkServerTrusted(certs: Array<X509Certificate>, authType: String) {}
    })

    val sslContext = SSLContext.getInstance("SSL")
    sslContext.init(null, trustAllCerts, SecureRandom())

    val sslParams = SSLParameters()
    // This should prevent host validation
    sslParams.endpointIdentificationAlgorithm = ""

    httpClient = HttpClient.newBuilder()
        .sslContext(sslContext)
        .sslParameters(sslParams)
        .build()
Run Code Online (Sandbox Code Playgroud)

但在发送时我有异常(尝试使用自签名证书的localhost):

java.io.IOException: No name matching localhost found
Run Code Online (Sandbox Code Playgroud)

使用IP地址而不是localhost会出现"无主题替代名称存在"异常.

在对JDK进行一些调试之后,我发现sslParams在抛出异常的地方真的被忽略了,并且使用了一些本地创建的实例.进一步调试显示,影响主机名验证算法的唯一方法是将jdk.internal.httpclient.disableHostnameVerification系统属性设置为true.这似乎是一个解决方案.SSLParameters在上面的代码中没有任何影响,所以这部分可以被丢弃.使其仅在全局配置看起来像新的HttpClient API中的严重设计缺陷.

java java-http-client java-11

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

如何在 Alpine linux docker 镜像中安装 oracle jdk11?

我的 Dockerfile:

FROM frolvlad/alpine-glibc:latest

ADD jdk-11.0.6_linux-x64_bin.tar.gz /usr/java

ENV JAVA_HOME=/usr/java/jdk-11.0.6
ENV PATH=$JAVA_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

当我java -version在容器中运行命令时,我得到了这个段错误: 在此处输入图片说明

我怎么解决这个问题?

java segmentation-fault docker alpine-linux java-11

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

在模块路径上使用OpenJFX 11 JMODS在JDK 11上运行javafx示例

我从OpenJFX项目下载了JavaFX Jmod文件并将它们放在目录中G:\openjfx\javafx-jmods-11.我正在使用没有JavaFX jmod的OpenJDK 11,JAVA_HOME/jmods即它没有JavaFX发行版.

模块信息文件:

module gui{
    requires javafx.graphics;
    requires javafx.controls;

    exports com.test;
}
Run Code Online (Sandbox Code Playgroud)

我编译如下:

javac -p G:\openjfx\javafx-jmods-11 -d mods --module-source-path src 
    src\gui\com\test\*.java src\gui\module-info.java
Run Code Online (Sandbox Code Playgroud)

编译成功.但我无法使用以下命令运行已编译的代码:

java -p G:\openjfx\javafx-jmods-11;mods -m gui/com.test.CreateGuiDemo
Run Code Online (Sandbox Code Playgroud)

但我得到以下错误:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.graphics not found, required by gui
Run Code Online (Sandbox Code Playgroud)

java javafx openjfx java-11 javafx-11

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

Java 11 HTTP客户端异步执行

我正在尝试JDK 11中的新HTTP客户端API,特别是它执行请求的异步方式.但有些事情我不确定我理解(有点像实现方面).在文档中,它说:

在可行的CompletableFuture情况下,返回实例的异步任务和相关操作将在客户端提供的线程上执行Executor.

据我所知,这意味着如果我在创建HttpClient对象时设置自定义执行程序:

ExecutorService executor = Executors.newFixedThreadPool(3);

HttpClient httpClient = HttpClient.newBuilder()
                      .executor(executor)  // custom executor
                      .build();
Run Code Online (Sandbox Code Playgroud)

然后,如果我异步发送请求并在返回时添加依赖操作CompletableFuture,则依赖操作应在指定的执行程序上执行.

httpClient.sendAsync(request, BodyHandlers.ofString())
          .thenAccept(response -> {
      System.out.println("Thread is: " + Thread.currentThread().getName());
      // do something when the response is received
});
Run Code Online (Sandbox Code Playgroud)

但是,在上面的依赖操作(使用者中thenAccept)中,我看到执行它的线程来自公共池而不是自定义执行器,因为它打印Thread is: ForkJoinPool.commonPool-worker-5.

这是实施中的错误吗?或者我错过了什么?我注意到它说"实例是在客户端的执行程序提供的线程上执行的,在实际可行的情况下",这是不适用的情况?

请注意,我也尝试了thenAcceptAsync,结果相同.

java asynchronous http completable-future java-11

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

使用java11构建和部署javafx应用程序

我按照https://blog.jetbrains.com/idea/2013/03/packaging-javafx-2-applications-in-intellij-idea-121/中的步骤进行操作

但是当我尝试构建工件时,就像在最后一步一样,我得到了这个错误

在此输入图像描述

错误:Java FX Packager:无法构建工件 - fx:deploy在此JDK中不可用

在此输入图像描述

我知道JavaFX已经从java11中删除了我的问题是我应该怎么做才能构建一个.jar.exe

这是一个快速测试的hello world应用程序.

java javafx intellij-idea java-11 javafx-11

13
推荐指数
3
解决办法
6332
查看次数

Android是否支持Java 11?

我是android开发的新手。而且我已经在计算机上安装了eclipse,java 11和android sdk工具。但是,当我尝试构建项目时,它说要升级工具。但是我已经安装了最新的SDK。

当我在网上正在读我发现,Android不完全支持Java SE和它主要针对Java SE 6和7支持- 但是这是一个老帖子

我发现android不完全支持java 11。

我的问题是,什么是完全支持android的JDK版本,我是否必须在计算机中安装2个JDK版本?

java sdk android java-11

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

JDK8 的 JDK 11 迁移问题,com.fasterxml.jackson.module.afterburner.util.MyClassLoader 进行非法反射访问

我已成功将我的 spring boot 项目(在 prod env 中运行)从 JDK8 迁移到 JDK11。我可以构建、测试、打包、安装、部署等等。

从 IDE 启动项目后,我的日志中出现以下警告,但这并没有停止构建和运行我的应用程序。

请就此提出建议。

警告:发生了非法反射访问操作 WARNING: Illegal reflective access by com.fasterxml.jackson.module.afterburner.util.MyClassLoader (file:/C:/Users/XXXXX/.m2/repository/com/fasterxml/jackson/module/jackson-module-afterburner/2.11.0/jackson-module-afterburner-2.11.0.jar) to method java.lang.ClassLoader.findLoadedClass(java.lang.String) 警告:请考虑将此问题报告给 com.fasterxml.jackson.module.afterburner.util.MyClassLoader 的维护者警告:使用 --illegal-access=warn 启用进一步非法反射访问的警告操作警告:所有非法访问操作将在未来版本中被拒绝

migration spring-boot jhipster java-11

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

在jshell-11中,为什么重置为null的重新声明的引用变量仍然具有类型?

当在第33行重新声明Integer'a'时,为什么jshell将引用变量显示为Integer的实例(参考第38和39行)?重新声明后,第34行显示'a'设置为null.当'a'在第6行声明但未给出值时,或在第22行中重置为null时,'a'不被视为Integer的实例.我希望当引用变量被重新声明时,因为它的值为null,所以它不是一个类型的实例; 然而,事实并非如此.

01: java-lava:~ cafedude$ jshell
02: |  Welcome to JShell -- Version 11
03: |  For an introduction type: /help intro
04: 
05: jshell> Integer a;
06: a ==> null
07: |  created variable a : Integer
08: 
09: jshell> a instanceof Integer;
10: $2 ==> false
11: |  created scratch variable $2 : boolean
12: 
13: jshell> a = 1;
14: a ==> 1
15: |  assigned to a : Integer
16: 
17: jshell> a instanceof Integer;
18: …
Run Code Online (Sandbox Code Playgroud)

java instanceof jshell java-11

12
推荐指数
2
解决办法
143
查看次数