tags:

views:

387

answers:

3

I'm using this code:

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

But on compile I get this error:

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

And then a stack trace of compiler errors.

I'm doing both of these imports at the beginning of the class:

package com.me.example;

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

What can be wrong?

In Netbeans i see the autocomplete options and no syntax error for the Locale object...

+1  A: 

Looks like there might be something fishy in your build environment, as Locale.getISOCountries() should work just fine. Try compiling a small test program manually and see if you get the same error.

andri
A: 

Definitely try to boil this down to a minimum, three-line program (or so), compile from the command-line, then put that class into your IDE and see if you still get the error, and if not, then change/add one line at a time until you have the original failing program, looking for what causes the problem. I'm thinking maybe some other import in your code is importing a Locale class? Why in the world would it be looking for source code?

See what happens when you compile this from the command-line:

import java.util.*;

public class LocaleTest {
  public static void main(String[] args) {
    Locale.getISOCountries();
  }
}
skiphoppy
+3  A: 

Something screwy with your setup, the folllowing program works fine for me.

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);
        }
    }
}

The fact that it's asking for source code leads me to believe that it's trying to compile or run it in some sort of debugging mode. You shouldn't need the source code for java.util.* to compile, that's just bizarre.

See if my simple test program works in your environment, then try looking for something along those lines (debugging options). Final step: compile your code with the baseline javac (not NetBeans).

UPDATE:

Actually, I have found something. If you are creating GWT applications, I don't think java.util.Locale is available on the client side (only the server side). All of the references on the web to this error message point to GWT and its limitations on the client side which are, after all, converted to Javascript goodies, so cannot be expected to support the entire set of Java libraries.

This page here shows how to do i18n on GWT apps and there's no mention of java.util.Locale except on the server side.

paxdiablo
Thanks, this was indeed a GWT issue. I've decided to retrieve the countries through GWT-RPC
Click Upvote