JDK 11 的包 java.net.http 不存在
package java.net.http does not exist for JDK 11
我不知道出了什么问题,因为我的代码中没有错误,但构建失败,错误包 java.net.http 不存在。
我下载了 jar 并将其添加为依赖项。
它还在 java --list-modules.
中列出
- compileSdkVersion 32
- buildToolsVersion '30.0.2'
- minSdkVersion 26
- targetSdkVersion 30
- gradleVersion = '7.2'
- 来源兼容性
- Java版本.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- 实施文件('libs/java.net.http.jar')
我从 jdk 文件夹中的 jmods 文件夹中得到的 jar。
我尝试更新到 jdk 17 也一样。
我尝试使用此 的解决方案,但未找到 return 模块。
我受影响的代码
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(reqURI))
.build();
HttpResponse<String> response = httpClient.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println("uri:" + response.uri());
System.out.println("header:" +response.headers());
System.out.println("body" + response.body());
System.out.println("status code" + response.statusCode());
java-版本:
- 打开jdk版本“11”2018-09-25
- OpenJDK 运行时
环境 18.9(内部版本 11+28)
- OpenJDK 64 位服务器 VM 18.9(构建
11+28,混合模式)
里面build.gradle
dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.firebase:firebase-messaging:23.0.0'
implementation files('libs/simple-xml-2.6.7/simple-xml-2.6.7.jar')
implementation files('libs/ksoap2-android-assembly-2.6.5/ksoap2-android-assembly-2.6.5.jar')
implementation files('libs/org-apache-commons-io/org-apache-commons-io.jar')
implementation files('libs/sc-light-jdk15on-1.47.0.2.jar')
implementation files('libs/scpkix-jdk15on-1.47.0.2.jar')
implementation files('libs/scprov-jdk15on-1.47.0.2.jar')
implementation files('libs/java.net.http.jar')
}
实际上,我想要的是替换下面已经弃用的代码
DefaultHttpServerConnection conn = new DefaultHttpServerConnection();
params = new BasicHttpParams();
params.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 5000)
.setIntParameter(CoreConnectionPNames.SOCKET_BUFFER_SIZE,8*1024)
.setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK,false)
.setBooleanParameter(CoreConnectionPNames.TCP_NODELAY, true)
.setParameter(CoreProtocolPNames.ORIGIN_SERVER,"HttpComponents/1.1");
conn.bind(socket, params);
正在从请求的 URI 中提取信息
HttpRequest request = conn.receiveRequestHeader();
request.getRequestLine().getMethod().toUpperCase(Locale.ENGLISH);
Uri uri = Uri.parse(request.getRequestLine().getUri());
String httpAPI = uri.getPath();
String httpQuery = uri.getQuery();
我通过更改应用程序的targetSdkVersion和CompileSdkVersion解决了问题(参考Migrating apps to Android 11),否则会有很多弃用的功能。
我不知道出了什么问题,因为我的代码中没有错误,但构建失败,错误包 java.net.http 不存在。 我下载了 jar 并将其添加为依赖项。 它还在 java --list-modules.
中列出- compileSdkVersion 32
- buildToolsVersion '30.0.2'
- minSdkVersion 26
- targetSdkVersion 30
- gradleVersion = '7.2'
- 来源兼容性
- Java版本.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- 实施文件('libs/java.net.http.jar')
我从 jdk 文件夹中的 jmods 文件夹中得到的 jar。
我尝试更新到 jdk 17 也一样。
我尝试使用此
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(reqURI))
.build();
HttpResponse<String> response = httpClient.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println("uri:" + response.uri());
System.out.println("header:" +response.headers());
System.out.println("body" + response.body());
System.out.println("status code" + response.statusCode());
java-版本:
- 打开jdk版本“11”2018-09-25
- OpenJDK 运行时 环境 18.9(内部版本 11+28)
- OpenJDK 64 位服务器 VM 18.9(构建 11+28,混合模式)
里面build.gradle
dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.firebase:firebase-messaging:23.0.0'
implementation files('libs/simple-xml-2.6.7/simple-xml-2.6.7.jar')
implementation files('libs/ksoap2-android-assembly-2.6.5/ksoap2-android-assembly-2.6.5.jar')
implementation files('libs/org-apache-commons-io/org-apache-commons-io.jar')
implementation files('libs/sc-light-jdk15on-1.47.0.2.jar')
implementation files('libs/scpkix-jdk15on-1.47.0.2.jar')
implementation files('libs/scprov-jdk15on-1.47.0.2.jar')
implementation files('libs/java.net.http.jar')
}
实际上,我想要的是替换下面已经弃用的代码
DefaultHttpServerConnection conn = new DefaultHttpServerConnection();
params = new BasicHttpParams();
params.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 5000)
.setIntParameter(CoreConnectionPNames.SOCKET_BUFFER_SIZE,8*1024)
.setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK,false)
.setBooleanParameter(CoreConnectionPNames.TCP_NODELAY, true)
.setParameter(CoreProtocolPNames.ORIGIN_SERVER,"HttpComponents/1.1");
conn.bind(socket, params);
正在从请求的 URI 中提取信息
HttpRequest request = conn.receiveRequestHeader();
request.getRequestLine().getMethod().toUpperCase(Locale.ENGLISH);
Uri uri = Uri.parse(request.getRequestLine().getUri());
String httpAPI = uri.getPath();
String httpQuery = uri.getQuery();
我通过更改应用程序的targetSdkVersion和CompileSdkVersion解决了问题(参考Migrating apps to Android 11),否则会有很多弃用的功能。