首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JDK 11不存在包java.net.http

JDK 11不存在包java.net.http
EN

Stack Overflow用户
提问于 2022-01-03 20:40:24
回答 2查看 547关注 0票数 0

我不知道哪里出了问题,因为我的代码中没有错误,但是构建失败的错误包java.net.http并不存在。我下载了jar并将其作为依赖项添加。它还在java -列表-模块中列出。

  • compileSdkVersion 32
  • buildToolsVersion '30.0.2‘
  • minSdkVersion 26
  • targetSdkVersion 30
  • gradleVersion = '7.2‘
  • sourceCompatibility
  • JavaVersion.VERSION_11
  • targetCompatibility JavaVersion.VERSION_11
  • 实现文件(‘libs/java.net.http.jar’)

我从jdk文件夹中的jmods文件夹获得的jar。我也尝试过更新jdk 17。我尝试这个“包java.net.http不存在”JDK9上的错误的解决方案,但是没有找到返回模块。我的受影响代码

代码语言:javascript
运行
复制
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 -version:

  • openjdk版本"11“2018-09-25
  • OpenJDK运行时环境18.9 (构建11+28)
  • OpenJDK 64位服务器VM 18.9 (构建11+28,混合模式)

内部build.gradle

代码语言:javascript
运行
复制
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')
}

实际上,我想要的是替换下面已经不推荐的代码

代码语言:javascript
运行
复制
 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中提取信息

代码语言:javascript
运行
复制
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();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-12 06:43:37

我通过更改应用程序的targetSdkVersion和CompileSdkVersion (参考将应用程序迁移到Android 11)解决了这个问题,否则会有很多不推荐的函数。

票数 0
EN

Stack Overflow用户

发布于 2022-07-20 19:51:08

对于那些使用maven的用户,请记住升级pom.xml中的发行版#

我有同样的症状错误.java:5,21包java.net.http不存在错误.java:144,27包HttpRequest不存在从Java 16升级到18,更新的JAVA_HOME,重新启动--没有joy意识到maven pom.xml可能过时--它是第10版,更新的版本#与JDK 18相匹配解决了,现在编译很好。

代码语言:javascript
运行
复制
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.10.1</version>
    <inherited>true</inherited>
    <configuration>
        <release>18</release>
    </configuration>
</plugin>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70571205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档