0

当我启动我的 bat 文件时:

@echo off
title x
:start
echo.
java -server -Dfile.encoding=UTF-8 -Xms64m -Xmx64m -Xbootclasspath/p:../libs/l2ft.jar -    cp config/xml;../libs/*; l2ft.loginserver.AuthServer
if ERRORLEVEL 2 goto restart
if ERRORLEVEL 1 goto error
goto end
:restart
echo Restarted ...
goto start
:error
echo Terminated abnormaly ...
:end
echo Terminated ...

我收到奇怪的错误:

Error occurred during initialization of VM
java.nio.charset.UnsupportedCharsetException: UTF-8
    at java.nio.charset.Charset.forName(Unknown Source)
    at java.nio.charset.Charset.defaultCharset(Unknown Source)
    at sun.nio.cs.StreamEncoder.forOutputStreamWriter(Unknown Source)
    at java.io.OutputStreamWriter.<init>(Unknown Source)
    at java.io.PrintStream.<init>(Unknown Source)
    at java.io.PrintStream.<init>(Unknown Source)
    at java.lang.System.initializeSystemClass(Unknown Source)

我试图重新安装java jdk,我已经在bat文件中获得了默认编码:-Dfile.encoding=UTF-8,所以我不知道问题的解决方案是什么。

4

3 回答 3

1

我找到了解决方案。在包含 AuthServer 的 jar 中,有很多 UTF-8 不支持的俄语字符。删除每个字符并重新编译后,问题就消失了。我朋友的 Jar 文件也包含这些字符,但它可以正常工作。我不知道如何,但这现在不重要,因为问题已经消失了。

于 2013-07-05T17:02:44.227 回答
0

我不确定您的 p:../libs/l2ft.jar,这不是正确的道路。尝试用这个替换你的当前行:

java -server -Dfile.encoding=UTF-8 -Xms64m -Xmx64m -cp p:../libs/l2ft.jar;config/xml;../libs/* l2ft.loginserver.AuthServer

只需确保将“p:../libs/l2ft.jar”替换为 l2ft.jar 所在的正确路径即可。

于 2013-07-04T20:11:19.737 回答
0

看起来您的 Java 不支持 UTF-8,这真的很奇怪,因为根据Charset 类的文档,每个 Java 都应该支持它。

尝试运行此代码以确保确实不支持 UTF-8。

import java.nio.charset.Charset;

public class TestCharset {
    public static void main(String[] args) {
        System.out.println(Charset.forName("UTF-8"));
    }
}

如果不支持 UTF-8,它应该抛出异常。

您也可以尝试使用它,UTF8而不是为了UTF-8以防万一您使用了不正确的连字符。UTF-8根据规格是正确的,但也UTF8适用于我的机器。

于 2013-07-04T20:07:13.657 回答