I was playing with some free java code but I was miffed.
In the current working directory, I have xyz.jar and a subdirectory
coresrvlets. The classes of the package coreservlets are naturally all in
the subdirectory coreservlets. Furthermore xyz.jar has the library that some
of the coreservlets classes may cay on.
I can't run the ShadowedTextFra me class from the current directory with
java -classpath .;xyz.jar coreservlets\Sh adowedTextFrame
nor
java -classpath .;xyz.jar;cores ervlets coreservlets\Sh adowedTextFrame
( I get something like
Exception in thread "main" java.lang.NoCla ssDefFoundError :
coreservlets\Sh adowedTextFrame (wrong name: coreservlets/ShadowedTextFra me)
at java.lang.Class Loader.defineCl ass0(Native Method)
at java.lang.Class Loader.defineCl ass(ClassLoader .java:486)
)
However, I could run an applet which calls the above ShadowedTextFra me from
the current directory like this
appletviewer ShadowedText.ht ml
where ShadowedText.ht ml has an applet tag like this
<applet
code=coreservle ts\ShadowedText Applet.class
name=ShadowedTe xtApplet
archive=xyz.jar
width=320
height=300 >
<param name="MESSAGE" value="TEST text shadow">
</applet>
What do I need to do so I can run the ShadowedTextFra me class directly with
the java command?
ShadowedTextFra me.java looks to me perfectly like a regular swing java
application to me with its main. and the source code is as follows
The package coreservlets;
import java.awt.*;
import javax.swing.*;
import java.awt.geom.* ;
import java.awt.event. *; // for the listeners
/** Interactive interface to MessageImage class.
* Enter message, font name, and font size on the command
* line. Requires Java2.
* <P>
* Taken from Core Servlets and JavaServer Pages
* from Prentice Hall and Sun Microsystems Press,
* http://www.coreservlets.com/.
* © 2000 Marty Hall; may be freely used or adapted.
*/
public class ShadowedTextFra me extends JPanel {
private Image messageImage;
public static void main(String[] args) {
String message = "Shadowed Text";
if (args.length > 0) {
message = args[0];
}
String fontName = "Serif";
if (args.length > 1) {
fontName = args[1];
}
int fontSize = 90;
if (args.length > 2) {
try {
fontSize = Integer.parseIn t(args[2]);
} catch(NumberFor matException nfe) {}
}
JFrame frame = new JFrame("Shadowe d Text");
frame.addWindow Listener(new ExitListener()) ;
JPanel panel =
new ShadowedTextFra me(message, fontName, fontSize);
frame.setConten tPane(panel);
frame.pack();
frame.setVisibl e(true);
}
public ShadowedTextFra me(String message,
String fontName,
int fontSize) {
messageImage = MessageImage.ma keMessageImage( message,
fontName,
fontSize);
int width = messageImage.ge tWidth(this);
int height = messageImage.ge tHeight(this);
setPreferredSiz e(new Dimension(width , height));
}
public void paintComponent( Graphics g) {
super.paintComp onent(g);
g.drawImage(mes sageImage, 0, 0, this);
}
}