Hi,
I figured out there is def. a bug in this question.
I tried it all on my own console
\test\javac -classpath MyJar.jar GetJar.java
\test\java GetJar
Exception in
thread "main" java.lang.NoClassDefFoundError: myApp/Foo
at GetJar.main(GetJar.java:4)
Caused by: java.lang.ClassNotFoundException: myApp.Foo
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 1 more
Which does work is:
\test\java -classpath MyJar.
jar:. GetJar
8
Another possible way to get this done is:
\test\javac -classpath MyJar.jar GetJar.java
\test\javac MyApp/Foo.java
\test\java GetJar
8
And last but not least, the simplest thing to do is:
\test\javac GetJar.java
\test\java GetJar
8
GetJar.java uses myApp.Foo. javac searches for it, finds a myApp/Foo.java, compiles it and uses that one.
java GetJar then also uses the class file instead of the jar.
----------
Hm. I think it's somewhat "oookayish" to have errors in a book, as there are so many things to check - you will never have a book without a single error. But what about the real exam?! How can I be sure that there will not be similar errors?! You only do the exam and at the end they tell you your score, without telling you what (and why) was wrong - so you neither have any option to complain about exam bugs...
Cheers,
Marcus