定义String fetch的代码行报Invalid Character Constant错误如何修复
报错根因
你的代码存在Java与JavaScript(Node.js)语法完全混写的根本性错误,第二行报2个Invalid character constant的直接原因是:Java语法中单引号'仅能用来包裹单个字符,定义char类型常量,你用单引号包裹了node-fetch这个长字符串,编译器无法识别,直接抛出字符常量非法的错误。
全量代码错误点
- 外层方法声明用了Java的
public static void api()强类型方法写法,但方法内部几乎全是Node.js专属语法,两种语言的运行环境和语法规则完全不通用,不能直接混写在同一个代码块里 - Java中不存在
require()依赖导入语法、let变量声明关键字、箭头函数=>、Promise链式调用.then()这类JS专属特性;反过来JavaScript中也不需要写String这类强类型声明 - 字符串插值语法写错,JS模板字符串的插值格式是
${变量名},不是你写的$[变量名] .then(data {处漏写了箭头函数的=>,末尾catch逻辑处多写了一个右括号,语法不闭合
修复方案
先明确你要使用的开发语言,二选一即可:
方案1:使用Node.js(JavaScript)开发
完全移除Java相关的语法声明,使用纯JS写法,运行前先在项目目录执行npm install node-fetch@2安装依赖,修正后代码如下:
const fetch = require('node-fetch'); const API_FILE = require('./API_KEY.json'); const API_KEY = API_FILE.API_KEY; const playername = "Username"; fetch(`https://api.hypixel.net/player?key=${API_KEY}&name=${playername}`) .then(res => res.json()) .then(data => { console.log(data); }) .catch(err => console.log("Network Error", err));
方案2:使用Java开发
Java不能调用node-fetch这类JS依赖,使用Java 11+内置的HttpClient即可发请求,读取JSON配置文件需要用配套的JSON解析库(比如Jackson、Gson),不要用JS的require语法,示例代码如下:
import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class HypixelApiTest { public static void api() throws Exception { // 实际使用时替换为你从API_KEY.json读取到的真实key String API_KEY = "你的Hypixel API Key"; String playername = "Username"; String requestUrl = String.format("https://api.hypixel.net/player?key=%s&name=%s", API_KEY, playername); HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(requestUrl)) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); // 打印接口返回结果 System.out.println(response.body()); } }
注意:如果用Java开发,所有字符串必须用双引号包裹,单引号仅能用来定义单个字符,比如
char singleChar = 'a';,不要和JS的语法规则混淆。
内容的提问来源于stack exchange,提问作者Tr0uBlz3
相关产品推荐
相关产品推荐

