jdk1.4之后如果不打包很有可能是找不到类的如果打了包就很简单了
只要把两个类的目录结构的根目录放在一起就可以找到
比如
myPackage
    pack1
       xxx
          MyClass1
    pack2
       yyy
          MyClass2
分别有两个包pack1.xxx和pack2.yyy
他们的根路径在一起
相互调用import就能找到

解决方案 »

  1.   

    不行,在打了包的A类中,如果引用没有加包名的B类,编译器会在A类所处的包中搜索B类,而B类不处于A类所属的包中.在编译时就会报错。
      

  2.   

    最好是打成jar包,然后在你的classpath下面把你的包引进来就可以了!
      

  3.   

    可以的,不过得有点变化,下面我以前写过的一篇小tip:这个问题源于java版网友的一个帖子由于不带包结构的类无法被import
    而直接使用的话,编译器会报错:cannot resolve symbol联想到除了直接用new的方式创建一个对象外
    还可以通过Class.forName().newInstance()的方式获取类的实例
    于是写了一个测试例子如下://MyShow.java
    //用以被调用的不带包结构定义的类
    public class MyShow {
        public String show() {
            return "None Package";
        }
    }
    //MyClass.java
    //用以测试调用的类
    package com.zcjl.test.base;import java.lang.reflect.Method;
    public class MyClass {
        public static void main(String[] args) {
            try {
                Object obj = Class.forName("MyShow").newInstance();
                Class clazz = obj.getClass();
                Method method = clazz.getMethod("show", null);
                String returnValue = (String) method.invoke(obj, null);
                System.out.println(returnValue);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }bingo!编译通过,运行MyClass.class,控制台返回
    None Package
      

  4.   

    因为是这样:
    我用c写的动态链接库,类名在编译的时候用javah -jni的时候就写死在.h和.c文件里了
    现在我这个动态链接库别人包里的类要调用,有什么办法?
      

  5.   

    学习!zcjl的办法确实可以
    因为他实现的原理是用ClassLoader在类路径里面搜索class文件
    确实不错
      

  6.   

    我用zcjl()的方法编译通过,执行的时候提示:(linux j2sdk1.4.2_07)
    Exception in thread "main" java.lang.NoClassDefFoundError: MyClass (wrong name: com/MyClass)
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
    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)
      

  7.   

    在com的上级目录下,用java com.zcjl.test.base.MyClass运行
    前提是,要么没有设定classpath变量,要么classpath中得包含"."这个路径