我正在使用此代码:
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对象没有语法错误...
答案 0 :(得分: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库集。
此页面here显示了如何在GWT应用上执行i18n,除了服务器端之外,没有提到java.util.Locale
。
答案 1 :(得分:1)
在您的构建环境中看起来可能有些可疑,因为Locale.getISOCountries()
应该可以正常工作。尝试手动编译一个小的测试程序,看看你是否得到了同样的错误。
答案 2 :(得分:0)
绝对尝试将其归结为最小的三行程序(左右),从命令行编译,然后将该类放入IDE中,看看是否仍然出现错误,如果没有,则一次更改/添加一行,直到您有原始的失败程序,查找导致问题的原因。我想也许你的代码中的其他一些导入是导入Locale类?为什么世界上会寻找源代码?
看看从命令行编译时会发生什么:
import java.util.*;
public class LocaleTest {
public static void main(String[] args) {
Locale.getISOCountries();
}
}