当我启动我的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,所以我不知道该问题的解决方案。
答案 0 :(得分:1)
我找到了解决方案。在包含AuthServer的jar中,有很多UTF-8不支持的俄语字符。删除每个字符并重新编译后,问题就消失了。我朋友的Jar文件也包含这些字符,但它没有问题。我不知道如何,但现在这不重要,因为问题已经消失。
答案 1 :(得分:0)
看起来你的Java不支持UTF-8,这真的很奇怪,因为每个Java都应该根据documentation of the Charset class支持它。
尝试运行此代码以确保不支持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
也适用于我的机器。
答案 2 :(得分: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所在的正确路径。