为什么java.nio.charset.Charsets编译错误?

时间:2012-06-30 20:38:17

标签: java javac

在我的类UriCodec.java中

import java.nio.charset.Charsets,但是当我使用javac(jdk6)编译此类错误时。例如: javac UriCodec.java

错误代码:

import java.nio.charset.Charsets;
                       ^
UriCodec.java:140: Can not find symbol
symbol: Variable Charsets
position: class com.android.exchange.utility.UriCodec
        appendEncoded(builder, s, Charsets.UTF_8, false);
                                  ^
UriCodec.java:144: Can not find symbol
symbol: Variable Charsets
position: class com.android.exchange.utility.UriCodec
        appendEncoded(builder, s, Charsets.UTF_8, true);
                                  ^
UriCodec.java:203: Can not find symbol
symbol: Variable Charsets
position: class com.android.exchange.utility.UriCodec
        return decode(s, false, Charsets.UTF_8);
                                ^
UriCodec.java:214: Can not find symbol
symbol: Method toHexString(byte,boolean)
position: class java.lang.Byte
        sb.append(Byte.toHexString(b, true));
                      ^
5 error

我的班级:

import java.nio.charset.Charset;
import java.nio.charset.Charsets;
public abstract class UriCodec {


    public final void appendEncoded(StringBuilder builder, String s) {
        appendEncoded(builder, s, Charsets.UTF_8, false);
    }

    public final void appendPartiallyEncoded(StringBuilder builder, String s) {
        appendEncoded(builder, s, Charsets.UTF_8, true);
    }

    public static String decode(String s) {
        return decode(s, false, Charsets.UTF_8);
    }


   public final String encode(String s, Charset charset) {
        // Guess a bit larger for encoded form
        StringBuilder builder = new StringBuilder(s.length() + 16);
        appendEncoded(builder, s, charset, false);
        return builder.toString();
    }
}

1 个答案:

答案 0 :(得分:10)

没有Charsets这样的课程。有Charset(单数),但这不是一回事......

我怀疑你收到了这样的消息:

UriCodec.java:1: error: cannot find symbol
import java.nio.charset.Charsets;
                       ^
  symbol:   class Charsets
  location: package java.nio.charset
1 error

当您收到编译器错误时,读取。如果编译器说它找不到符号,那么通常有一个很好的理由 - 所以请仔细检查你是否正确拼写了所有内容,并使用正确的套管。

将导入更改为

import java.nio.charset.Charset;

一切都应该好。

...或者如果你的意思是另一个Charsets类(例如the one in Guava),你应该为那个类添加一个导入。