弱智问题:java中如何调用一个类?

gao277 2002-05-17 02:51:11
我在一个文件a.java中定义了一个类,如何在文件b.java中引用这个类?
...全文
324 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
system 2002-05-17
  • 打赏
  • 举报
回复
package xxx.xxx.a;
a source....

将a的代码编译。
以下为b的代码:
package xxx.xxx.a;//与a代码中的包名字相同
import xxx.xxx.*;/**加入含有class a 的包,你可以使用此包中的任何类,也许你编译a时,生成了多个类文件*/
b source....

这样行了吗?
==============================================
所以,《package xxx.xxx.a;//与a代码中的包名字相同》
是不正确的。
system 2002-05-17
  • 打赏
  • 举报
回复
你这个问题提得不错。
如果我在a.java文件中想调用java.lang.String类
而我又把a.java 文件中加上
package java.lang
会出现什么问题呢?
测试如下程序
package java.lang;
public class a{
public static void main(String[] args){
System.out.println("hello");
}
}
测试结果:
Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.lang
at java.lang.ClassLoader.defineClass(ClassLoader.java:495)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:246)
at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
at java.lang.ClassLoader.loadClass(ClassLoader.java:262)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:322)
gao277 2002-05-17
  • 打赏
  • 举报
回复
总算解决了!给分
colin1022 2002-05-17
  • 打赏
  • 举报
回复
如果还不行,
联系我g6660666@etang.com
system 2002-05-17
  • 打赏
  • 举报
回复
csdn上怎样才能上传文件呢?
colin1022 2002-05-17
  • 打赏
  • 举报
回复
package xxx.xxx.a;
a source....

将a的代码编译。
以下为b的代码:
package xxx.xxx.a;//与a代码中的包名字相同
import xxx.xxx.*;/**加入含有class a 的包,你可以使用此包中的任何类,也许你编译a时,生成了多个类文件*/
b source....

这样行了吗?


gao277 2002-05-17
  • 打赏
  • 举报
回复
对的,我的classpath中加了点和分号。没用
system 2002-05-17
  • 打赏
  • 举报
回复
上面Hello类和Log类代码我不是已经贴出来了吗。
boy 2002-05-17
  • 打赏
  • 举报
回复
在classpath中加上点和分号(.;)试试
colin1022 2002-05-17
  • 打赏
  • 举报
回复
把你的代码贴出来!!!!
system 2002-05-17
  • 打赏
  • 举报
回复

这是个很常见的问题,多试几次就明白了。
gao277 2002-05-17
  • 打赏
  • 举报
回复
我试了,好像也没用
system 2002-05-17
  • 打赏
  • 举报
回复
当然了,简单地说
1)打包a.class 成a.jar
2) 将a.jar包含进路径CLASSPATH
3) 在b.java中通过import方式使用a.class
gao277 2002-05-17
  • 打赏
  • 举报
回复
真的入楼上的所说有这么麻烦吗?我觉得不应该有这么麻烦! colin1022(暗夜要爪哇) 的方法我试了没有用,对象我也实例化了!但是还是有这样的问题!
system 2002-05-17
  • 打赏
  • 举报
回复
(以下程序在w2k,j2sdk1.4.0下测试通过)

假设我在类Hello中:import Log.log;
类Hello和Log都是自己写的。
1)编写java文件
文件Hello.java
package Hello;
import Log.*;
public class Hello{
public static void main(String[] args){
System.out.println("hello");
Log log=new Log("hello");
log.printit();
}
}

文件Log.java

package Log;

public class Log{
private String s;
public Log(String str){
s=str;
}
public void printit(){
System.out.println(s);
}
}
2)编写SetEnv1.bat
set JAVA_HOME=c:\j2sdk1.4.0
set PATH=c:\j2sdk1.4.0\bin

3)编译Log.java并打包成Log.jar
md temp//临时目录存放Log.class
javac -d temp Log\*.java
cd temp
jar cvf Log.jar Log
cd..

4)编写SetEnv2.bat

set JAVA_HOME=c:\j2sdk1.4.0
set PATH=c:\j2sdk1.4.0\bin
set CLASSPATH=.;C:\Hello\Lib\Log.jar

5)编译Hello.java
md Classes//临时目录
javac -d Classes Hello\*.java

6)编写Run.bat

cd classes
java Hello.Hello


airlulu 2002-05-17
  • 打赏
  • 举报
回复
你没有实例化它吧?
telenths 2002-05-17
  • 打赏
  • 举报
回复
先建一个目录 目录名叫 t
然后 目录里的类 前面都加上 package t
colin1022 2002-05-17
  • 打赏
  • 举报
回复
在class a中用package声明后,会把class a包含在package xxxxx.xxx.a中,
然后在class b的代码最开头注明import 你刚才打的a的那个包就行了。
不知道,对不对?
gao277 2002-05-17
  • 打赏
  • 举报
回复
如何用package声明?
我写了好像也没有用,是不是 package XXXXX.XXX.a
scarab 2002-05-17
  • 打赏
  • 举报
回复
那就是程序的问题了
加载更多回复(7)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧