两个JAR相互引用第一次编译
① 算法(第4版)给的两个jar包stdlib.jar和algs4.jar要怎么用
我只是导入了stdlib.jar,是导入到external(外部的) jars,然后编译时还是会有问题,不过按照错误给的提示(忘记提示是什么了),然后enter一下就可以了,之后编译成功,并且在我所创建的项目中多了一个“引用 的库”。
② 如何运行和编译jar
一、源文件情况
源文件位置为:D:\temp,源文件名(含包名字):com.ldq.WeatherDemo.java
前提:已安装 jdk ,并配置好环境变量。
二、过程
1、编译:
提示符进入 D:\temp 路径下,输入:javac com\ldq\WeatherDemo.java
生成类文件:WeatherDemo.class
2、打包:
提示符进入 D:\temp 路径下,输入:jar cvf WeatherDemo.jar com\ldq\WeatherDemo.class
生成档案文件:WeatherDemo.jar
3、修改 MANIFEST.MF 文件:
由于引用了外部的类,所以要添加引用类的路径,即修改MANIFEST.MF文件。保存如下内容到 D:\temp下,文件名 MANIFEST.MF
Manifest-Version: 1.0
Sealed: true
Main-Class: com.ldq.WeatherDemo
Class-Path: lib/jaxrpc.jar lib/log4j-1.2.8.jar lib/mail.jar lib/saaj.jar lib/tools.jar lib/wsdl4j-1.5.1.jar lib/activation.jar lib/axis.jar lib/axis-ant.jar lib/commons-discovery-0.2.jar lib/commons-logging-1.0.4.jar
注意在后面空两行。
提示符进入 D:\temp 路径下,输入:jar umf MANIFEST.MF WeatherDemo.jar
执行时会提示更新的内容。
4、添加包含引用类的相应文件:
在 D:\temp 路径下,新建 lib 文件夹,讲对应的 jaxrpc.jar ... 拷入其中,此时,即可双击(或在提示符下输入:java -jar WeatherDemo.jar)运行 WeatherDemo.jar 文件了。
三、总结
双击运行 jar 文件时,虚拟机会到 jar 文件中下找 .MF 文件,找到对应的 Main-Class 运行,引入的类在 Class-Path 所指路径。
事实上可以利用 winrar或winzip 工具打开 jar 文件,直接将修改好的 MANIFEST.MF 拷入覆盖,class文件也可以做同样的操作,节省了输入复杂难记的命令。另外,对于 javaME 生成的 jar 文件,限制严格些,MANIFEST.MF 文件中有个文件大小的字段,可以先保存,查看文件大小,再修改保存。
另一种方法是通过 Eclipse - Export - Runnable JAR file 直接生成 jar 文件,此时,所有的引用类都被打包在 jar 文件里了。
③ 把jar文件放到另一个jar中,然后加载它
做法很简单,其实jar文件就是压缩文件,装了win rar/zip的话就好办了。
首先,选中多个jar文件,点右键“解压到……”某个目录,这时候应该会有些文件重叠,主要是MANIFEST.MF,不管它,解压完毕,把合并的信息填入MANIFEST.MF或者写个readme,随便你,总之最好记录下这次归并,为将来升级有据可查。
然后,压缩这个文件夹内的内容,注意根目录要正确!选择zip格式压缩,扩展名为jar。
最后,合并完毕,起个好名字吧。
自动合并的工具我没找到 不好意思 希望能帮助你
④ 引入jar包编译不存在
引入jar包编译不存在的解决方法为:
1、打开idea的Settings,进入BuildExecutionDeployment/BuildTools/Maven/Runner,将DelegateIDE勾上。
2、把maven的setting文件中的本地仓库地址注释掉。关闭idea,重新加载本地仓库文件。
3、直接在idea命令行输入:mvnidea:idea。
⑤ java项目中jar包引用问题
你没有把你的jar包文档加载进项目中,项目编译时默认只会去加载lib文件夹下的jar包,当然会找不到你放其他文件夹下的包
右击项目=》Build Path=》ConfigureBuild Path...
添加你自己的jar包管理,点进去跟着向导做,导入你自己工程下存放的jar包文件夹就行了
⑥ 一个java程序用到了很多jar包,如何用命令行形式来编译、运行此程序
javac -cp jar包路径 xx.java,有多个jar包时,之间有“;”隔开:如果用引用到其它的类,则保证引入类结构良好的情况下,加上引入类所在的路径(不包含类的包路径)