English 中文(简体)
Locale.getISOCountries()出现奇怪错误
原标题:
  • 时间:2009-04-03 01:17:09
  •  标签:

我正在使用此代码:

    for (final String code : Locale.getISOCountries())
    {
        //stuff here
    }

但在编译时,我会出现以下错误:

[ERROR] Line 21: No source code is available for type java.util.Locale; did you forget to inherit a required module?

然后是编译器错误的堆栈跟踪。

我在开始上课的时候做这两项导入:

package com.me.example;

import java.util.Locale;
import java.util.*;

可能出了什么问题?

在Netbeans中,我看到了自动完成选项,并且Locale对象没有语法错误。。。

最佳回答

你的设置有点不对劲,下面的程序对我来说很好。

import java.util.*;
import java.util.Locale;
public class Donors {
    public static void main (String [] args) {
        for (final String code : Locale.getISOCountries()) {
            System.out.println (code);
        }
    }
}

事实上,它要求代码,这让我相信它试图以某种调试模式编译或运行它。你不应该需要java.util.*的源代码来编译,这很奇怪。

看看我的简单测试程序是否能在您的环境中工作,然后试着沿着这些路线寻找一些东西(调试选项)。最后一步:使用基线javac(而不是NetBeans)编译您的代码。

更新:

事实上,我发现了一些东西。如果您正在创建GWT应用程序,我认为java.util.Locale在客户端(仅在服务器端)不可用。网络上对该错误消息的所有引用都指向GWT及其在客户端的限制,毕竟这些限制已经转换为Javascript的好东西,因此不能指望它支持整个Java库集。

本页这里展示了如何在GWT应用程序上执行i18n,除了在服务器端,没有提到java.util.Locale

问题回答

看起来您的构建环境中可能有一些可疑之处,因为Locale.getISOCountries()应该可以正常工作。试着手动编译一个小的测试程序,看看是否会出现同样的错误。

一定要试着把它归结为一个最少的三行程序(大约),从命令行编译,然后把这个类放进IDE,看看你是否仍然会得到错误,如果没有,那么一次更改/添加一行,直到你有了最初的失败程序,寻找问题的原因。我在想,也许你代码中的其他导入是在导入Locale类?它到底为什么要寻找源代码?

查看从命令行编译时会发生什么:

import java.util.*;

public class LocaleTest {
  public static void main(String[] args) {
    Locale.getISOCountries();
  }
}




相关问题
热门标签