You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

定义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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:01:02