关于Eclipse导出可执行jar包的几个问题

时间:2022-03-21 18:32:14
关于Eclipse导出可执行jar包的几个问题
项目原先是使用旧版本的eclipse。并且使用maven配置工程的。后来使用了最新版本的eclipse。因为翻不了墙,所以在.m2的文件夹目录下添加了阿里云的配置文件。然而阿里云的servlet-api.jar是6.0的。我使用的9.0版本的。所以这导致了出现异常。之后,我便将Tomcat下的servlet-api.jar拷贝到%JAVA_HOME%/jre/ext下。直接运行工程。发现没有异常。
重点是,我在使用Eclipse时,导出可执行jar包时。因为工程的原因,第一种导出方式不使用。所以选择了第二个导出方式。导出完成后运行jar包。发现异常还在。便使用了第三种导出方式。在第三种导出方式,导出后,看了lib文件发现servlet-api.jar还是6.0的。所以便得知了上面交待阿里云的servlet-api.jar旧版本的原因。之后便在pom.xml里面删除了servlet-api.jar的配置。让其自动查找环境变量下配置的servlet-api.jar的版本。第三种方式是可行的。不过,第二种还是出现之前的异常了。打开jar包查看也并非有6.0版本的servlet-api.jar包。


所以有了以下些个疑问:
1.这三种打包方式各有什么优缺点?(如果有的话)
2.这三种使用依赖的jar的路径搜索不一样么?
3.如果想要使用第二种导出方式,我该怎么去解决这个问题?

4 个解决方案

#1


servlet-api.jar是一个运行环境的提供的包,要么放在jdk/jre目录下,要么放在容器中。pom中加上版本号,设置为provided就可以,需要将这个相关信息写入部署手册


现在apache的maven库(不*)访问没有问题的,可以设置多个库,apache maven为主。
这个也不错,搜索很方便,http://mvnrepository.com/repos/central

#2


引用 1 楼 tianfang 的回复:
servlet-api.jar是一个运行环境的提供的包,要么放在jdk/jre目录下,要么放在容器中。pom中加上版本号,设置为provided就可以,需要将这个相关信息写入部署手册


现在apache的maven库(不*)访问没有问题的,可以设置多个库,apache maven为主。
这个也不错,搜索很方便,http://mvnrepository.com/repos/central


你所说的容器是指?那这三种导出方式有区别么?我也不知道为啥我的网络怎么更新不了,试了一天愣是不行。最后只能用阿里云的了。 新手一枚,从未碰过java。

#3


三种jar包添加方式区别 
1)直接用MyEclipse里自带的相关的项目jar包:
这种方式,jar文件直接链接到MyEclipse的文件下,并没有拷贝到WEB-INF/lib目录下,不得用项目的发布、移植,可能会出现jar找不到的情形
2)添加外部的jar包到web项目的lib包下:
选择性比较的强,可以随意的加jar包,只要在本机存在就可以了,链接的也是jar文件的绝对路径,缺点同1
3)手动拷贝jar文件到项目的lib包下:
直接添加到WEB-INF/lib目录下,移植性强,可操作性也强
ProjSolution

#4


引用 3 楼 changkang1990 的回复:
三种jar包添加方式区别 
1)直接用MyEclipse里自带的相关的项目jar包:
这种方式,jar文件直接链接到MyEclipse的文件下,并没有拷贝到WEB-INF/lib目录下,不得用项目的发布、移植,可能会出现jar找不到的情形
2)添加外部的jar包到web项目的lib包下:
选择性比较的强,可以随意的加jar包,只要在本机存在就可以了,链接的也是jar文件的绝对路径,缺点同1
3)手动拷贝jar文件到项目的lib包下:
直接添加到WEB-INF/lib目录下,移植性强,可操作性也强
ProjSolution


那我在第二种导出来的jar包里,在添加个jar包。这个新添加的jar包。能访问到?如果是工程必备的条件下。是不是第二种导出jar包,那么在导出来的这个jar包里添加了一个新的jar包。这个新的jar包路径是?是取真实物理路径的jar包存在地方。还是相对外层的jar包的绝对路径。

#1


servlet-api.jar是一个运行环境的提供的包,要么放在jdk/jre目录下,要么放在容器中。pom中加上版本号,设置为provided就可以,需要将这个相关信息写入部署手册


现在apache的maven库(不*)访问没有问题的,可以设置多个库,apache maven为主。
这个也不错,搜索很方便,http://mvnrepository.com/repos/central

#2


引用 1 楼 tianfang 的回复:
servlet-api.jar是一个运行环境的提供的包,要么放在jdk/jre目录下,要么放在容器中。pom中加上版本号,设置为provided就可以,需要将这个相关信息写入部署手册


现在apache的maven库(不*)访问没有问题的,可以设置多个库,apache maven为主。
这个也不错,搜索很方便,http://mvnrepository.com/repos/central


你所说的容器是指?那这三种导出方式有区别么?我也不知道为啥我的网络怎么更新不了,试了一天愣是不行。最后只能用阿里云的了。 新手一枚,从未碰过java。

#3


三种jar包添加方式区别 
1)直接用MyEclipse里自带的相关的项目jar包:
这种方式,jar文件直接链接到MyEclipse的文件下,并没有拷贝到WEB-INF/lib目录下,不得用项目的发布、移植,可能会出现jar找不到的情形
2)添加外部的jar包到web项目的lib包下:
选择性比较的强,可以随意的加jar包,只要在本机存在就可以了,链接的也是jar文件的绝对路径,缺点同1
3)手动拷贝jar文件到项目的lib包下:
直接添加到WEB-INF/lib目录下,移植性强,可操作性也强
ProjSolution

#4


引用 3 楼 changkang1990 的回复:
三种jar包添加方式区别 
1)直接用MyEclipse里自带的相关的项目jar包:
这种方式,jar文件直接链接到MyEclipse的文件下,并没有拷贝到WEB-INF/lib目录下,不得用项目的发布、移植,可能会出现jar找不到的情形
2)添加外部的jar包到web项目的lib包下:
选择性比较的强,可以随意的加jar包,只要在本机存在就可以了,链接的也是jar文件的绝对路径,缺点同1
3)手动拷贝jar文件到项目的lib包下:
直接添加到WEB-INF/lib目录下,移植性强,可操作性也强
ProjSolution


那我在第二种导出来的jar包里,在添加个jar包。这个新添加的jar包。能访问到?如果是工程必备的条件下。是不是第二种导出jar包,那么在导出来的这个jar包里添加了一个新的jar包。这个新的jar包路径是?是取真实物理路径的jar包存在地方。还是相对外层的jar包的绝对路径。