JAVA关于引用外部jar包的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA关于引用外部jar包的问题相关的知识,希望对你有一定的参考价值。

我写了一个类库,想把这个类库打成jar包,在别的项目中引用现在问题来了这个类库中某个类的 一个方法中我可以预先传入那个要引用项目中的参数吗?比如public void example(Display di,Object ob,GameA, ga) //其中这个GameA在这个类库项目中不存在,而是在另外一个我要引用这个类库的那个项目中。因为这个项目中不存在GameA 所以一直报错,但是可以打包..也可以在那个项目中引用这个方法,并且传入自身if(ga!=null)system.out.println(""+ga.i) // 打印GameA中变量i的值 如果不可以这样写,可以写成Object ga 来接收吗?但是由于Objcte ga中也没有i这个变量 所以也是报错。。应该怎么解决这个问题呢?或者说这种设计思路本身就存在问题

java中有个很神奇的东西叫做“interface”即接口。
你可以在你那个类库的项目中定义一个接口
public interface GameA
public String get_i();
而在你需要用的这个类库的项目中实现这个接口,就OK了。
public class GameAimpl implements GameA()
public String get_i()
return "aaa";

你的类库项目只需要针对那个接口编程,而不需要关心实际项目中是如何实现的。
参考技术A 这是JAVA中包和类与接口的概念问题。

eclipse生成带有外部jar包的java可执行jar包

之前有写过一篇使用eclipse生成java可执行jar包,但是最近的一次使用中无论如何都不成功,当双击执行打成的jar时,弹出如下错误:

could not find the main class:mailTest.SendMailTest1.Program wil exit

 

针对这一问题,我首先想到在上一次编写java聊天小程序打包时的问题,也是这个错误,当时网上说需要更改eclipse中该项目的jdk版本为1.6,如图:

 

虽然意料之中,但是依旧有些遗憾的是,这样修改后生成的jar包,在双击执行时依旧弹出图1的错误,然后在网上搜索之后,找到了一个正确的步骤,也知道了按之前方法打包不成功的原因。(不过,这一次打包时,发现还是必须改成1.6才成功,和上次也不一样)

 

原因在于之前的方式的前提是没有引用外部的包,而这里是引用了发邮件的那个mail包。

 

正确的步骤如下:

1、鼠标右击项目--》选择export--》选择java--》选择JAR file--》点击next--》选择要生成的jar包的存放路径,如图:

 

--》点击next--》继续next(必要时可以去掉这里出现的界面中最上边两个选项)--》在出现的界面如图操作:

 

勾选箭头1处,然后在Manifest file后边选择输入“/项目名/文件名”--》点击finish,之后会看到项目中多出一个文件,如果没有看到,刷新下项目应该可以看到:

 

2、打开刚才生成的文件,例如这里的SendMailTest1,在里边添加两行:

Main-Class: main方法所在的类的全路径

Class-Path: 外部jar包的路径

 

因为这个文件生成的时候自己写入了一行,因此加入上边两行以后文件中会有三行:

这里需要注意的是,我一开始按这个步骤打出的jar执行后还是图1的错误,后来查了好久才知道我在写入那两行数据时冒号后边没有空格,所以这里一定要空格才可以。

 

3、保存上边的文件后,在执行一开始的步骤:鼠标右击项目--》选择export--》选择java--》选择JAR file--》点击next--》选择要生成的jar包的存放路径--》点击next--》继续next(必要时可以去掉这里出现的界面中最上边两个选项)--》在出现的界面如图操作:

 

和之前的选择不一样,这里需要选中箭头1指的地方,然后在Manifest file后选择刚才生成和修改过的这个文件--》点击finish,jar生成成功。

 

我这个小程序的main方法就实现了一个很简单的功能,双击后发送一封邮件到我的qq邮箱,只要我收到了就证明成功:

 

 

 

以上是关于JAVA关于引用外部jar包的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于Maven项目引入外部jar包的方式

关于java动态加载jar的问题?

java命令行执行程序解决依赖外部jar包的问题

Android开发,关于依赖库和JAR包的区别以及

求教usb的操作方法 关于 java.libusb-win32.jar包的问题

java中maven引用拥有同名方法的jar包的问题