java中怎么编译不同文件夹但是相互有关的文件啊
比如说:有主程序文件在f:\aa\bb文件夹下名为a.java,它要调用f:\aa\bb\cc文件夹下的b.java才能正常运行,为什么我到f:\aa\bb\cc编译b....
比如说:有主程序文件在f:\aa\bb 文件夹下名为a.java,它要调用f:\aa\bb\cc 文件夹下的 b.java才能正常运行, 为什么我到f:\aa\bb\cc 编译b.java没问题 而到f:\aa\bb 再编译a.java就说 找不到包f:\aa\bb\cc ?????
展开
4个回答
展开全部
这就是类路径(classpath)问题,楼主肯定还不是很明白包、类路径、import的作用。
简单的说下:
package是用来组织类的,确保类的唯一性;
classpath是提供给javac、java等工具使用的,用来查找加载相关需要的类;
import是用来在类中导入相关类,提供一种简单的书写形式;
如果b.java的package是aa.bb.cc,且编译后的b.class在f:\aa\bb\cc下,那么其classpath就是f:\ ,不在包aa.bb.cc下的其他类引用b.class,如a.java,就要这样aa.bb.cc.b 或 import aa.bb.cc.b 来使用b类,在编译a.java时需要指定类路径f:\ ,javac -cp .;f:\ a.java (其中的 .; 在JDK5+是可选的,它表是的是当前路径) ;
再假设b.java没有package,那么在a.java中使用b类,无需import语句;但classpath就是f:\aa\bb\cc\;这样在编译a.java时指定类路径f:\aa\bb\cc,javac -cp .;f:\aa\bb\cc a.java;
归类就是:如果类指定了package,class文件就必须在package下,而classpath就是根包名所在路径;如上面指定b.java的package是aa.bb.cc,那么b.class必须在aa\bb\cc下,classpath 就是aa目录所在的路径f:\,编译其它使用了b类但不在包aa.bb.cc下的类 就需要告诉编译器b类的classpath ;
简单的说下:
package是用来组织类的,确保类的唯一性;
classpath是提供给javac、java等工具使用的,用来查找加载相关需要的类;
import是用来在类中导入相关类,提供一种简单的书写形式;
如果b.java的package是aa.bb.cc,且编译后的b.class在f:\aa\bb\cc下,那么其classpath就是f:\ ,不在包aa.bb.cc下的其他类引用b.class,如a.java,就要这样aa.bb.cc.b 或 import aa.bb.cc.b 来使用b类,在编译a.java时需要指定类路径f:\ ,javac -cp .;f:\ a.java (其中的 .; 在JDK5+是可选的,它表是的是当前路径) ;
再假设b.java没有package,那么在a.java中使用b类,无需import语句;但classpath就是f:\aa\bb\cc\;这样在编译a.java时指定类路径f:\aa\bb\cc,javac -cp .;f:\aa\bb\cc a.java;
归类就是:如果类指定了package,class文件就必须在package下,而classpath就是根包名所在路径;如上面指定b.java的package是aa.bb.cc,那么b.class必须在aa\bb\cc下,classpath 就是aa目录所在的路径f:\,编译其它使用了b类但不在包aa.bb.cc下的类 就需要告诉编译器b类的classpath ;
展开全部
学习一下关于package,import,访问权限修饰符的内容,一切就都明白了.
在java中,文件夹和包有密切的关系。
内在原理不解释了,自己看一下书。
解决方法是:
比如有一个test文件夹,里面有a,b两个独立的文件夹。
把class A放在文件夹a中,并在开头写上package a;
把class B放在文件夹b中,并在开头写上package b;
把A.java和B.java放在test下,用javac -d . A.java编译,同样编译B.java,
需要注意的是,如果你的A需要B,则要在A.java中的package a;下写一句import b.B;
并且先编译B.java,之后编译A.java.运行的时候在test路径下,运行java a.A
在java中,文件夹和包有密切的关系。
内在原理不解释了,自己看一下书。
解决方法是:
比如有一个test文件夹,里面有a,b两个独立的文件夹。
把class A放在文件夹a中,并在开头写上package a;
把class B放在文件夹b中,并在开头写上package b;
把A.java和B.java放在test下,用javac -d . A.java编译,同样编译B.java,
需要注意的是,如果你的A需要B,则要在A.java中的package a;下写一句import b.B;
并且先编译B.java,之后编译A.java.运行的时候在test路径下,运行java a.A
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a.java 调用了 b.java吗?a.java import b.java了没 还有package没 a.java没package b就要package cc
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询