我在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) 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) 有时需要允许不安全的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中的严重设计缺陷.
我的 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在容器中运行命令时,我得到了这个段错误:

我怎么解决这个问题?
我从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) 我正在尝试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,结果相同.
我按照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应用程序.
我是android开发的新手。而且我已经在计算机上安装了eclipse,java 11和android sdk工具。但是,当我尝试构建项目时,它说要升级工具。但是我已经安装了最新的SDK。
当我在网上正在读我发现,Android不完全支持Java SE和它主要针对Java SE 6和7支持- 但是这是一个老帖子。
我发现android不完全支持java 11。
我的问题是,什么是完全支持android的JDK版本,我是否必须在计算机中安装2个JDK版本?
我已成功将我的 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 启用进一步非法反射访问的警告操作警告:所有非法访问操作将在未来版本中被拒绝
当在第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-11 ×10
java ×9
javafx ×2
javafx-11 ×2
spring-boot ×2
alpine-linux ×1
android ×1
asynchronous ×1
docker ×1
http ×1
instanceof ×1
jhipster ×1
jshell ×1
migration ×1
openjfx ×1
sdk ×1
soap ×1