package onlyfun.caterpillar;
import java.util.*;
import java.lang.ref.*;class VeryBig
{
private static final int SZ = 10000;
private double[] d = new double[SZ];
private String ident;
public VeryBig(String id)
{
this.ident = id;
}
public String toString()
{
return ident;
}
public void finalize()
{
System.out.println("Finalizing " + ident);
}
}public class TreeSetDemo
{
private static ReferenceQueue rq = new ReferenceQueue();
public static void checkOut()
{
Object inq = rq.poll();
if(inq != null)
{
System.out.println("In Queue" + (VeryBig)((Reference)inq).get());
}
}
public static void main(String[] args)
{
int size = 10;
if(args.length > 0)
size = Integer.parseInt(args[0]);
SoftReference[] sa = new SoftReference[size];
for(int i = 0; i < sa.length; i++)
{
sa[i] = new SoftReference(new VeryBig("Soft " + i), rq);
System.out.println("Just created: " + (VeryBig)sa[i].get());
checkOut();
}
WeakReference[] wa = new WeakReference[size];
for(int i = 0; i < wa.length; i++)
{
wa[i] = new WeakReference(new VeryBig("Weak " + i), rq);
System.out.println("Just created: " + (VeryBig)wa[i].get());
checkOut();
}
SoftReference s = new SoftReference(new VeryBig("Soft"));
WeakReference w = new WeakReference(new VeryBig("Weak"));
System.gc();
PhantomReference[] pa = new PhantomReference[size];
for(int i = 0; i < pa.length; i++)
{
pa[i] = new PhantomReference(new VeryBig("Phantom " + i), rq);
System.out.println("Just created: " + (VeryBig)pa[i].get());
checkOut();
}
}
}
=====================
错误提示:
java.lang.NoClassDefFoundError: TreeSetDemo (wrong name: onlyfun/caterpillar/TreeSetDemo)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
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)
Exception in thread "main" 我可是照书上打出来的啊,怎么不知道哪里出错了,谢谢大家
import java.util.*;
import java.lang.ref.*;class VeryBig
{
private static final int SZ = 10000;
private double[] d = new double[SZ];
private String ident;
public VeryBig(String id)
{
this.ident = id;
}
public String toString()
{
return ident;
}
public void finalize()
{
System.out.println("Finalizing " + ident);
}
}public class TreeSetDemo
{
private static ReferenceQueue rq = new ReferenceQueue();
public static void checkOut()
{
Object inq = rq.poll();
if(inq != null)
{
System.out.println("In Queue" + (VeryBig)((Reference)inq).get());
}
}
public static void main(String[] args)
{
int size = 10;
if(args.length > 0)
size = Integer.parseInt(args[0]);
SoftReference[] sa = new SoftReference[size];
for(int i = 0; i < sa.length; i++)
{
sa[i] = new SoftReference(new VeryBig("Soft " + i), rq);
System.out.println("Just created: " + (VeryBig)sa[i].get());
checkOut();
}
WeakReference[] wa = new WeakReference[size];
for(int i = 0; i < wa.length; i++)
{
wa[i] = new WeakReference(new VeryBig("Weak " + i), rq);
System.out.println("Just created: " + (VeryBig)wa[i].get());
checkOut();
}
SoftReference s = new SoftReference(new VeryBig("Soft"));
WeakReference w = new WeakReference(new VeryBig("Weak"));
System.gc();
PhantomReference[] pa = new PhantomReference[size];
for(int i = 0; i < pa.length; i++)
{
pa[i] = new PhantomReference(new VeryBig("Phantom " + i), rq);
System.out.println("Just created: " + (VeryBig)pa[i].get());
checkOut();
}
}
}
=====================
错误提示:
java.lang.NoClassDefFoundError: TreeSetDemo (wrong name: onlyfun/caterpillar/TreeSetDemo)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
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)
Exception in thread "main" 我可是照书上打出来的啊,怎么不知道哪里出错了,谢谢大家
解决方案 »
- 运行Applet出现java.security.cert.CertificateParsingException
- 接口的作用到底是什么?~我找了个例子,帮我看看吧! (
- 求助高手,用XMLEncoder来储存StyledDocument的时候得到的xml没内容
- Java图形界面用什么写?
- 问个简单的问题<td><%=rs.getDouble("STANDARD_VALUE")/rs.getDouble("ACTUAL_VALUE")%>倍</td>为什么不行
- 此段代码请高手解释下
- static int x1 = prt("x1");是什么意思?
- 关于视频监控
- 关于swing和定时器的问题
- jbuild8在使用之前需要什么设置吗?
- 一个关于加密的问题,达人入!
- 关于打包jar的路径问题:我的java文件放在包内com.host.tt里,在dos下该如何写jar命令呢?
一个类定义在哪个包里面就必须出现在相应的子目录下,当一个类 x.class
出现在一个错误的子目录层次中时 JVM 会拒绝执行它。
当我这样: D:\JDK\bin\java.exe -classpath C:\Jars\log4j-1.2.8.jar;C:\jars\log4j-optional.jar org.apache.log4j.net.Log4jRadio 224.0.0.2 5001 来执行一个 Java Main Class 时,JVM 是这样搜索我的 Log4jRadio 类的,他先到 JVM /lib 目录找,当然找不到,再到 /lib/ext 找,当然还是找不到(因为这个类是我自己写的),那么它就到 C:\Jars\log4j-1.2.8.jar 中来找,你打开 WinZIP/WinRAR 看看 JAR 目录结构也是属性结构, JVM 查找事就是 把 JAR 根当作当前搜索根目录,把类的包名当成子目录名,去找 Log4jRadio.class 文件,这个例子中他应该到 /org/apache/log4j/net/ 目录下找到了 Log4jRadio.class 文件并装载, 如果他发现 Log4jRadio 出现在 /org/apache/log4j/ 目录下面他就会跑出异常 java.lang.NoClassDefFoundError , 拒绝执行,就好像你说你是只是个打杂的你偏偏坐在总裁的位子上一样。
JVM 搜索时把类路径下的每个路径当成“搜索根目录”,报名当成子目录名搜索 对应的 .class 文件, 这样安排就解决了跨平台的问题, 我们在写类定义时都是用包名,然后压缩成 .jar ,这个过程在所有的操作系统上都是一样的, 以后你到 不同的操作系统上运行他都没问题,因为类路径是运行时指定的,不需要编码时考虑,
在 Windows 下 我们这样:
C:\jdk\bin\> java -cp C:\jars\a.jar org.apache.log4j.net.Log4jRadio xxx.
在 Linux 下 我们这样:/home/jdk/bin# java -cp /home/userA/jars/a.jar org.apache.log4j.net.Log4jRadio xxx
比如你的 DOS 窗口这样的:C:\MyJavaSourceDir\>dir
2006-01-13 22:17 12,965 TreeSetDemo.java
2006-01-13 22:17 12,965 TreeSetDemo.class
2006-01-13 22:17 12,965 VeryBig.java
2006-01-13 22:17 12,965 VeryBig.class 5 个文件 3,159,052 字节
15 个目录 2,836,619,264 可用字节
C:\MyJavaSourceDir\>md onlyfunC:\MyJavaSourceDir\>cd onlyfunC:\MyJavaSourceDir\onlyfun\>md caterpillarC:\MyJavaSourceDir\onlyfun\>cd caterpillarC:\MyJavaSourceDir\onlyfun\caterpillar\> copy ..\..\*.*
4 files copied.C:\MyJavaSourceDir\onlyfun\caterpillar\>cd ..\..\C:\MyJavaSourceDir\> D:\JDK\bin\java.exe onlyfun.caterpillar.TreeSetDemo 5
《以下是你的程序输出》C:\MyJavaSourceDir\>D:D:\JDK\>bin\java.exe -classpath C:\MyJavaSourceDir onlyfun.caterpillar.TreeSetDemo 5
《以下是你的程序输出》