猿问

请问一下在Java中如何使用Package建一个新的包呢?

小弟最近我再写一套开发工具。自动生成Bean后要放到一个新建的包中,可是当我实例化Package的时候老是报不可视错误,那么我如何要使用Package新建一个包呢?或者在Java中如何使用代码在当前项目中创建一个新的包?
请各位大哥帮帮小弟吧,小弟我先谢谢各位了。

潇湘沐
浏览 660回答 3
3回答

阿波罗的战车

编译器往往从当前目录下开始,根据类的package名称来搜索文件,所以我们应该把A.java放在F:\test\edu\main目录下,并在F:\test下运行javac A.java命令,这样就可以找到A.java文件了吧,可惜事与愿违,编译报错,找不到源文件!!!因为上面可以根据包名找B.java是使用了编译器自带的make功能,而这里我们直接编译A.java,没有这个功能,也就是说直接编译的时候不能根据包名找到相关的类,那我们该怎么办呢?其实解决方案很简单,既然编译器不能根据包名找到A类,那把A类的绝对路径直接告诉编译器,事实上就是这么做的,具体操作为:在命令行模式下进入F:\test目录,然后运行编译命令javac F:\test\edu\main\A.java,可以成功编译生成A.class文件。(注意:如果不在此目录下执行编译命令的话,就要将f:\test加入到当前的classpath中为make工具提供B.java的位置信息)接下来就要运行这个class文件了,运行仍然在F:\test目录下执行(注意:如果不在此目录下执行运行命令的话,一定要把F:\test加入到当前的classpath中),命令为:java edu.main.A,很显然,这里就是根据输入的package名称找到对应的class文件,并检验找到的class文件的与输入的包名是否匹配(例如:如果你在edu目录下新建一个test目录,将A.class文件拷贝进去,输入java edu.test.A 的话还是会报错:找不到class文件)。可能有人要问:为什么运行的时候又可以根据包名找到相应的class文件呢?因为运行的时候默认是从当前路径开始搜索的,如果当前路径找不到的话,就在系统的classpath中找,如果再找不到就会报错。

慕森王

package com.bj.wfj;package是关键字,后面的自己定义,几层都行,随便写,自动生成你所定义的包,呵呵。补充下,这行代码要放在第一行。

HUX布斯

javac -d . xxx.java 打包编译,我觉得应该不是你要的!
随时随地看视频慕课网APP
我要回答