JAVA我定一了一个包却不能再另一个包中访问,提示不存在此包?为什么?
JAVA我定一了一个包却不能再另一个包中访问,提示不存在此包?为什么?packageorg.lxh.demo08.a;publicclassDemo{publicStri...
JAVA我定一了一个包却不能再另一个包中访问,提示不存在此包?为什么?
package org.lxh.demo08.a;
public class Demo {
public String getinfo(){
return "**-********************";
}
}
package org.lxh.demo08.b;
import org.lxh.demo08.a.Demo;
public class ImportDemo01 {
public static void main(String args[]){
System.out.println(new Demo().getinfo());
}
}
如上代码,在DOS中运行提示不存在Demo文件,而我复制到eclipse中却可以运行,这应该不是环境变量错误吧?那应该是那里错了,各位大侠帮帮忙吧。
如上代码我在DOS中的输入为:
javac -d . Demo.java
javac -d . ImportDemo01.java
显示错误如图:
如图 展开
package org.lxh.demo08.a;
public class Demo {
public String getinfo(){
return "**-********************";
}
}
package org.lxh.demo08.b;
import org.lxh.demo08.a.Demo;
public class ImportDemo01 {
public static void main(String args[]){
System.out.println(new Demo().getinfo());
}
}
如上代码,在DOS中运行提示不存在Demo文件,而我复制到eclipse中却可以运行,这应该不是环境变量错误吧?那应该是那里错了,各位大侠帮帮忙吧。
如上代码我在DOS中的输入为:
javac -d . Demo.java
javac -d . ImportDemo01.java
显示错误如图:
如图 展开
5个回答
展开全部
不是环境变量的问题。用javac时,如果要导入自己定义的包,必须告诉编译器你定义的包在哪里。当我们使用系统包(比如java.util.*)的时候,由于设置了classpath,所以编译器可以找到,就不会出错。而如果是自己的包,可以这样做:
1.使顶级包与要编译的类在同一个文件夹下,如本例中把 ImportDemo01.java
和org包都放到C:\,注意自己建立文件夹,org文件夹的结构与定义的包结构相同,Demo.java位于C:\org\a\Demo.java。然后到C:\下执行javac ImportDemo01.java
2.临时设置classpath,比如org包在F盘,与要编译的类不在一处。
在dos下:set classpath=%classpath%;f:\
然后到C:\下执行javac ImportDemo01.java
就好了,我已经试过了,两种方法都可以。
1.使顶级包与要编译的类在同一个文件夹下,如本例中把 ImportDemo01.java
和org包都放到C:\,注意自己建立文件夹,org文件夹的结构与定义的包结构相同,Demo.java位于C:\org\a\Demo.java。然后到C:\下执行javac ImportDemo01.java
2.临时设置classpath,比如org包在F盘,与要编译的类不在一处。
在dos下:set classpath=%classpath%;f:\
然后到C:\下执行javac ImportDemo01.java
就好了,我已经试过了,两种方法都可以。
展开全部
运行javac -d . Demo.java后,会在你的目录下生成一个Demo.class文件,将此文件拷贝到org/lxh/demo08/a/目录下(如果目录不存在,要建立),然后再运行javac -d . ImportDemo01.java
追问
生成的。CLASS文件就已经在org/lxh/demo08/a/目录下了,但之后运行javac -d . ImportDemo01.java 就出错了,提示不存在Demo类。怎么回事,帮帮忙吧,谢了,我弄了很久了》
追答
你的目录结构是什么样子的?
应该是
java/ja/org/lxh/demo08/a/吧
你编译ImportDemo01.java 时这个类必须放在
java/ja/下面,而且你的环境变量(CLASSPATH一定要有“.”,也就是当前路径)
你的错误提示就是找不到org/lxh/demo08/a/这个目录,你确定已经把你编译好的Demo.class拷贝到org/lxh/demo08/a/目录了吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把导入包语句里的Demo改为*号再试试
追问
改为*也一样不能运行,错错误结果一样,帮帮忙吧
追答
我刚才编译运行了一下,你的代码没问题,我这里编译运行都通过,结果也是你想要的,建议你再仔细检查一下文件的保存名称之类的细节,你是把这两段代码放在两个源文件里面吧?
如果还不行,你先把D:\java\ja目录下的那个org文件夹删除,然后输入命令:set classpath=D:\java\ja 最后按顺序编译demo和importdemo两个类文件。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
晕,那是因为你的main方法是静态的。你地明白? 不用我说原因了吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的第一个就很奇怪,
我这提示找不到文件。你的第一个怎么编译过的?
我这提示找不到文件。你的第一个怎么编译过的?
追问
可以呀,第一个就创建了个包,能编译的,看看我的运行顺序,我的也错了,就是不清楚错在那了,但在eclipse中却能运行,都是一样的程序,
追答
eclipse中当然可以找到包关系了。
那把你的目录结构发一下吧,
java\ja\............
这下面两个文件是怎么放的?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询