Re: Basic question about compiling
Knute Johnson wrote:
simplicity wrote:
I know this is kind of basic but somehow the solution escapes me.
I have the applet which is supposed to hook up with the hardware
attach to the computer. The hook-up interface is available in the
external JAR archive called sbsdk.jar. So, I compile the applet with
the following command:
javac -d %DST% ^
-classpath %CLASSPATH_1%;%CLASSPATH_2% ^
%SRC%\MyApplet.java>%DST%\MyApplet.log 2>%DST%\MyApplet.err
where
%CLASSPATH_1% points to the location of the sbsdk.jar, namely "C:\Users
\User\\Java\lib\sbsdk.jar"
and
%CLASSPATH_2% points to "%JRE%\lib\plugin.jar" (for JSObject to
communicate with javascript in the page).
OK, so far so good. Applet compiles with no issues. But that's where
So far all you've done is specify the compile-time classpath.
it ends. When I load the HTML file containing the applet into a
browser I am getting the exception
Exception in thread "thread applet-MyApplet.class-1"
java.lang.NoClassDefFoundError: com.<blah-blah>.sbsdk/SBSDKListener
Because you did not provide the JAR to the runtime classpath!
You need to study the Java tutorial.
Luckily, I have the access to the sbsdk.jar source code. When I copy
the folder structure containing compiled classes of sbsdk (com\<blah-
blah>\sbsdk), my applet loads and everything works as expected.
Your expectations are what are at fault.
You must provide the dependencies *at run-time*.
Can someone help me understand why this is happening? I know that this
We can tell you why this is happening; we cannot help you understand it.
is generally caused by SBSDKListener class not being available at the
run time (while it is available at compile time, hence no build
errors) but I do not understand what it means in practical terms.
It means, in practical terms, that you neglected to provide the applet with
its dependencies. Consider Knute's question:
Do you have an archive statement in your APPLET tag that lists all the
jar files?
http://docs.oracle.com/javase/1.4.2/docs/guide/misc/applet.html
Presumably he linked you to ancient docs to make the point that nothing has
changed in this area for a very long time.
You should read the tutorials and other documentation.
--
Lew