public void mouseMoved(MouseEvent e) { int x = e.getX(); int y = e.getY(); if((x>=100)&&(x<=(100+imageWidth))&&(y>=100)&&(y<=(100+imageHeight))) { setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR)); } else setCursor(Cursor.getDefaultCursor()); }
理想与现实为什么差距总是这么大?(^_^)一个再简单不过的程序都会出错,public class Test { public static void main(String args[]) { System.out.print("This is a test"); } }在IntelliaJ IDEA 4.5.1 中正常,但进入命令行:G:\MyDocument\Java\Test\src>javac Test.javaG:\MyDocument\Java\Test\src>java Test.class Exception in thread "main" java.lang.NoClassDefFoundError: Test/class用java -verbose Test.class 查看如下:G:\MyDocument\Java\Test\src>java -verbose test.class [Opened E:\j2sdk1.4.2\jre\lib\rt.jar] [Opened E:\j2sdk1.4.2\jre\lib\sunrsasign.jar] [Opened E:\j2sdk1.4.2\jre\lib\jsse.jar] [Opened E:\j2sdk1.4.2\jre\lib\jce.jar] [Opened E:\j2sdk1.4.2\jre\lib\charsets.jar] [Loaded java.lang.Object from E:\j2sdk1.4.2\jre\lib\rt.jar]
......(一些加载JDK运行库的过程)[Loaded java.lang.Math from E:\j2sdk1.4.2\jre\lib\rt.jar] [Loaded java.io.IOException from E:\j2sdk1.4.2\jre\lib\rt.jar] [Loaded java.io.FileNotFoundException from E:\j2sdk1.4.2\jre\lib\rt.jar] Exception in thread "main" java.lang.NoClassDefFoundError: test/class [Loaded java.lang.StackTraceElement from E:\j2sdk1.4.2\jre\lib\rt.jar] [Loaded java.lang.Shutdown from E:\j2sdk1.4.2\jre\lib\rt.jar] [Loaded java.lang.Shutdown$Lock from E:\j2sdk1.4.2\jre\lib\rt.jar]都要郁闷死了。谁知道这是为什么呀?
java Test就可以了,不要加class
回复 febchen() :————————————————————————————— G:\MyDocument\Java\Test\src>java test Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name: Tes t) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:537) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12 3) at java.net.URLClassLoader.defineClass(URLClassLoader.java:251) at java.net.URLClassLoader.access$100(URLClassLoader.java:55) at java.net.URLClassLoader$1.run(URLClassLoader.java:194) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:187) at java.lang.ClassLoader.loadClass(ClassLoader.java:289) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)G:\MyDocument\Java\Test\src>java test.class Exception in thread "main" java.lang.NoClassDefFoundError: test/class————————————————————————————————-关于classpath问题,我把所有可能的都包括了, .;E:\j2sdk1.4.2\jre\lib\charsets.jar;E:\j2sdk1.4.2\jre\lib\jce.jar;E:\j2sdk1.4.2\jre\lib\jsse.jar;E:\j2sdk1.4.2\jre\lib\plugin.jar;E:\j2sdk1.4.2\jre\lib\rt.jar;E:\j2sdk1.4.2\jre\lib\sunrsasign.jar;E:\j2sdk1.4.2\jre\lib\ext\dnsns.jar;E:\j2sdk1.4.2\jre\lib\ext\ldapsec.jar;E:\j2sdk1.4.2\jre\lib\ext\localedata.jar;E:\j2sdk1.4.2\jre\lib\ext\sunjce_provider.jar; 另外:JAVA_HOME:E:\j2sdk1.4.2 path:%JAVA_HOME%\bin
ro=new ImageIcon("Blank1.GIF");
ge=new ImageIcon("shell2.ico");
pr=new ImageIcon("Blank3.GIF");
bt=new JButton();
icon=new ImageIcon("Blank4.GIF");
lb=new JLabel("Java",icon,JLabel.CENTER);放在
init()
中
try{
ro=new ImageIcon(new URL(getCodeBase(),"Bullet.gif"));
....
}catch(Exception e){
e.printStackTrace();
}
刚才我又试过了,已经可以确定是IE对Applet 的访问进行了限制,也就是Sun推出Java时所谓的“安全性”,那问题现在转变为,—————— Applet可以访问哪些资源,如果要访问自定义资源的话,应该怎么去实现?
就要创建安全策略文件.java.policy 保存到你的用户目录下比如c:/Administrator/
使用jdk下的bin目录里的policytool.exe工具创建,并添加读,...等权限
********************************************************************
febchen() ( ) 信誉:105 2004-11-20 22:01:00 得分: 0
这样:
try{
ro=new ImageIcon(new URL(getCodeBase(),"Bullet.gif"));
....
}catch(Exception e){
e.printStackTrace();
}
*******************************************
如果必须访问本地文件,需要数字签名
自己做主机,自己访问自己;图片可以用放在tomcat的root的文件夹.
再把代码改一下就可以了,
应该要用到public URL getCodeBase()
Image getImage(URL url, String name) 这两个函数吧
import java.awt.event.*;
import javax.swing.*;
import javax.imageio.*;
import java.io.*;public class Draw extends JApplet implements MouseMotionListener
{
Image image;
int imageWidth;
int imageHeight;
public void init()
{
this.addMouseMotionListener(this);
try {
//setSize(new Dimension(400, 300));
image = getImage(this.getCodeBase(), "Chocobo.jpg");//这边这样就可以啦
} catch (Exception e) {
e.printStackTrace();
}
}
public void paint(Graphics g)
{
super.paint(g);
g.drawImage(image,100,100,this);
imageWidth = image.getWidth(this);
imageHeight = image.getHeight(this);
}
public void mouseDragged(MouseEvent e)
{
}
public void mouseMoved(MouseEvent e)
{
int x = e.getX();
int y = e.getY();
if((x>=100)&&(x<=(100+imageWidth))&&(y>=100)&&(y<=(100+imageHeight)))
{
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
}
else
setCursor(Cursor.getDefaultCursor());
}
public void dispose()
{
}
}
不通过配置applet是不能访问本地文件的,你的icon可能是以本地路径的形式进行装载的,所以提示你没有权限,可以使用url进行icon的装载,就像
********************************************************************
febchen() ( ) 信誉:105 2004-11-20 22:01:00 得分: 0
这样:
try{
ro=new ImageIcon(new URL(getCodeBase(),"Bullet.gif"));
....
}catch(Exception e){
e.printStackTrace();
}
*******************************************
如果必须访问本地文件,需要数字签名
谁能解释一下关于“数字签名”?
还是签个名好,JDK提供了keytool命令,生成X509的证书,然后导出公钥、密钥,然后用
公钥、jarsigner命令签Applet Jar包
具体看http://www.chinabs.net/java/default.asp?infoid=180
其实不用那么复杂,签名后直接用就可以了,只不过客户端会弹个安全警告,同意即可。
Icon ge=new ImageIcon("shell2.ico");
Icon pr=new ImageIcon("Blank3.GIF");
JButton bt=new JButton();
Icon icon=new ImageIcon("Blank4.GIF");
看到这几行了吗,Applet程序是不能访问文件的,除非你把你的IE的安全级别设置最低,否则就别想用Applet去直接访问文件的。
{
public static void main(String args[])
{
System.out.print("This is a test");
}
}在IntelliaJ IDEA 4.5.1 中正常,但进入命令行:G:\MyDocument\Java\Test\src>javac Test.javaG:\MyDocument\Java\Test\src>java Test.class
Exception in thread "main" java.lang.NoClassDefFoundError: Test/class用java -verbose Test.class 查看如下:G:\MyDocument\Java\Test\src>java -verbose test.class
[Opened E:\j2sdk1.4.2\jre\lib\rt.jar]
[Opened E:\j2sdk1.4.2\jre\lib\sunrsasign.jar]
[Opened E:\j2sdk1.4.2\jre\lib\jsse.jar]
[Opened E:\j2sdk1.4.2\jre\lib\jce.jar]
[Opened E:\j2sdk1.4.2\jre\lib\charsets.jar]
[Loaded java.lang.Object from E:\j2sdk1.4.2\jre\lib\rt.jar]
......(一些加载JDK运行库的过程)[Loaded java.lang.Math from E:\j2sdk1.4.2\jre\lib\rt.jar]
[Loaded java.io.IOException from E:\j2sdk1.4.2\jre\lib\rt.jar]
[Loaded java.io.FileNotFoundException from E:\j2sdk1.4.2\jre\lib\rt.jar]
Exception in thread "main" java.lang.NoClassDefFoundError: test/class
[Loaded java.lang.StackTraceElement from E:\j2sdk1.4.2\jre\lib\rt.jar]
[Loaded java.lang.Shutdown from E:\j2sdk1.4.2\jre\lib\rt.jar]
[Loaded java.lang.Shutdown$Lock from E:\j2sdk1.4.2\jre\lib\rt.jar]都要郁闷死了。谁知道这是为什么呀?
G:\MyDocument\Java\Test\src>java test
Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name: Tes
t)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
3)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)G:\MyDocument\Java\Test\src>java test.class
Exception in thread "main" java.lang.NoClassDefFoundError: test/class————————————————————————————————-关于classpath问题,我把所有可能的都包括了,
.;E:\j2sdk1.4.2\jre\lib\charsets.jar;E:\j2sdk1.4.2\jre\lib\jce.jar;E:\j2sdk1.4.2\jre\lib\jsse.jar;E:\j2sdk1.4.2\jre\lib\plugin.jar;E:\j2sdk1.4.2\jre\lib\rt.jar;E:\j2sdk1.4.2\jre\lib\sunrsasign.jar;E:\j2sdk1.4.2\jre\lib\ext\dnsns.jar;E:\j2sdk1.4.2\jre\lib\ext\ldapsec.jar;E:\j2sdk1.4.2\jre\lib\ext\localedata.jar;E:\j2sdk1.4.2\jre\lib\ext\sunjce_provider.jar;
另外:JAVA_HOME:E:\j2sdk1.4.2
path:%JAVA_HOME%\bin