Sida 1 av 1

Eclipse, JUnit, java.util.Currency [LÖST]

Postat: 06 nov 2008, 14:00
av micke_nordin
Hallå vänner!

Jag håller på att byta till Eclipse från BlueJ, for all my java hacking needs. Tyvärr har jag fått ett problem som jag inte riktigt vet hur jag skall felsöka.
Jag använder alltså eclipse 3.2 från förråden tillsammans med suns java jdk (också från förråden).
I en uppgift till min java kurs skall vi skriva kod i ett fördefinierat kodskellet på ett sådant sätt att den klara ett antal förskrivna junittest. Mitt problem hänger samman med en klass som använder sig av java.util.Currency. När jag kör junittestet får jag följande felmeddelande från eclipse:

Kod: Markera allt

java.lang.IllegalArgumentException: Invalid (empty) country code for locale:aa
   at java.util.Currency.<init>(libgcj.so.90)
   at java.util.Currency.getInstance(libgcj.so.90)
   at java.util.Currency.getInstance(libgcj.so.90)
   at Sek.<init>(Sek.java:16)
   at MoneyTester.setUp(MoneyTester.java:35)
   at junit.framework.TestCase.runBare(TestCase.java:132)
   at junit.framework.TestResult$1.protect(TestResult.java:110)
   at junit.framework.TestResult.runProtected(TestResult.java:128)
   at junit.framework.TestResult.run(TestResult.java:113)
   at junit.framework.TestCase.run(TestCase.java:124)
   at junit.framework.TestSuite.runTest(TestSuite.java:232)
   at junit.framework.TestSuite.run(TestSuite.java:227)
   at org.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java:76)
   at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
   at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

Konstruktorn för klassen Sek där felet uppstår ser ut så här:

Kod: Markera allt

    public Sek(double amount)
    {
    	super(amount, Currency.getInstance("SEK"));
    }
Det som gör att jag blir fundersam är att testet går igenom utan problem när jag testar i BlueJ.

Några idéer, någon?

/Micke

Re: Eclipse, JUnit, java.util.Currency

Postat: 08 nov 2008, 09:24
av diwic
Det verkar som om du använder libgcj.so.90, dvs Gnus JDK istället för Suns JDK.
Antagligen lyckas BlueJ använda Suns JDK.
Jag är osäker på hur man ändrar det; vad har du under Properties (på projektet) -> Java Build Path -> Libraries t ex?

Re: Eclipse, JUnit, java.util.Currency [LÖST]

Postat: 08 nov 2008, 12:30
av micke_nordin
Tack! Det löste problemet.

Jag gick på (i projektet) "Properties" → "Java Build Path" → "Libraries" → " Add Library" → "JRE System Library". Där markerade jag "Alternate JRE" och klickade på "Installed JREs" varefter jag klickade på "Search" och letade upp suns katalog som fanns i /usr/lib/jvm/java-6-sun-1.6.0.10

Sedan var det bara att välja rätt JRE och köra!

Tack så mycket.

/Micke