【问题标题】:Cannot pass a String parameter to HttpGet constructor, requires URI无法将字符串参数传递给 HttpGet 构造函数,需要 URI
【发布时间】:2025-12-18 04:10:02
【问题描述】:

我正在一个没有 java.net 包(因此没有 java.net.URI)的嵌入式平台上工作。我尝试使用 Apache 库创建一个 HttpClient,但是当我创建一个 HttpGet 对象并像这样传递一个字符串参数时

String request = "www.example.com";
HttpGet response = new HttpGet(request);

我还是得到了

The type java.net.URI cannot be resolved.

为什么我不能只使用new HttpGet(String) 构造函数?

当我尝试从 String 创建 JSONObject 并且构造函数需要我没有的 java.util.Map 时,也会发生同样的冲突。

【问题讨论】:

  • 请发布一些代码和编译器错误/堆栈跟踪。您是否在编译时或运行时收到此错误?您收到的错误消息似乎表明与您提到的问题不同。
  • 所以,这是一个编译时错误:The type java.net.URI cannot be resolved. It is indirectly referenced from required .class files 代码几乎就是我在问题中提到的那两行。
  • 怎么样?您是否从构建路径中删除了标准 Java 库?
  • 我觉得我解释得不好,抱歉。我没有所有标准 Java 库,我在使用 Java 库子集的平台上工作。所以,我无法导入 java.net.URI。因为 java.net 不在平台的子集中..
  • 您必须找到为您的特定平台编写的替代库。为 Java SE 编写的库在内部尝试使用您的非 Java 平台不提供的类时迟早会失败。

标签: java apache constructor http-get


【解决方案1】:
String request = "www.example.com";
HttpGet response = new HttpGet();
resporse.setURI(new URI(request));

【讨论】:

  • 问题是我不能使用 URI 类。我没有。
  • 那你就不能使用HttpClient了……即使你解决了这个错误,你也会遇到别的问题。