2

我正在使用这段代码:

    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 对象没有语法错误......

4

3 回答 3

3

您的设置有些棘手,以下程序对我来说很好。

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在客户端(只有服务器端)不可用。Web 上对这个错误消息的所有引用都指向 GWT 及其在客户端的限制,毕竟这些都已转换为 Javascript 好东西,因此不能指望支持整个 Java 库集。

这个页面在这里展示了如何在 GWT 应用程序上做 i18n,并且没有提到java.util.Locale除了服务器端。

于 2009-04-03T01:34:07.137 回答
1

看起来你的构建环境中可能有一些可疑的东西,Locale.getISOCountries()应该可以正常工作。尝试手动编译一个小测试程序,看看你是否得到同样的错误。

于 2009-04-03T01:25:15.550 回答
0

绝对尝试将其简化为最少的三行程序(左右),从命令行编译,然后将该类放入您的 IDE 中,看看您是否仍然收到错误,如果没有,则更改/添加一次一行,直到你有原来的失败程序,寻找导致问题的原因。我在想您的代码中的其他一些导入可能正在导入 Locale 类?为什么它会寻找源代码?

看看当你从命令行编译它时会发生什么:

import java.util.*;

public class LocaleTest {
  public static void main(String[] args) {
    Locale.getISOCountries();
  }
}
于 2009-04-03T01:33:18.043 回答