如何将jar包中的jar文件添加到classpath jar包

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&开发工具(26)
maven(26)
我们一般习惯用maven来管理、编译项目,部署的时候很少在服务器上再搭建一套maven环境。在部署项目时,需要将很多的依赖,多则上百个jar包加入到项目的库中。
一般来说,我们会想到将jar包添加到classpath目录中,过程如下:
1、转到配置文件的目录:cd etc
[root@db etc]# vi profile
2、如果已经配置过java环境,找到代码块:
JAVA_HOME=/usr/java/jdk1.8.0_45
export HADOOP_PREFIX=/usr/local/hadoop
PATH=$JAVA_HOME/bin:$PATH:$HADOOP_PREFIX/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native/
3、在CLASSPATH后面逐个添加jar包。
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:xxxx1.jar:xxxx2.jar
分析一下,这样的配置方法相当于在程序中将参数写死,一旦jar包变更,得重新配置,很不灵活。
最近在stack overflow上发现一篇文章:
One difference is that if we specify our libraries under the -Djava.ext.dirs flag, they will be loaded using the extension classloader (e.g. sun.misc.Launcher.ExtClassLoader) instead of the system classloader (e.g. sun.misc.Launcher.AppClassLoader).
Assuming that in our library, we have a class named Lib. And our application runs this code:
public class Main {
public static void main(String args[]) {
System.out.println(System.getProperty(&java.ext.dirs&));
ClassLoader test_cl = Main.class.getClassLoader();
ClassLoader lib_cl = Lib.class.getClassLoader();
System.out.println(test_cl == lib_cl);
System.out.println(test_cl);
System.out.println(lib_cl);
The console output will be:
C:\Program Files\Java\jdk1.6.0\jre\lib\C:\WINDOWS\Sun\Java\lib\ext
sun.misc.Launcher$AppClassLoader@107077e
sun.misc.Launcher$AppClassLoader@107077e
when the application is run using the command java -cp &folder/*;.& Main.
However, when the application is run using the command java -Djava.ext.dirs=folder Main, then the output will instead be:
sun.misc.Launcher$AppClassLoader@107077e
sun.misc.Launcher$ExtClassLoader@7ced01
总结解决方法:java给我们提供了一个扩展jar包的参数配置参数:java.ext.dirs
1、利用maven导出全部的依赖jar包,请参考上一篇文章:
2、将依赖的jar包上传到的服务器后,放到一个目录下,比如:dependencies
-Djava.ext.dirs=/usr/local/dependency
xx.Startxx.Start 为项目的main方法所在类。
3、另外一种方法是配置环境变量。
设置环境变量 &变量名lib&变量&#20540;c:\java\axis-1_1\lib
-Djava.ext.dirs=%lib%
4、可以在maven中设置启动Main方法启动类。
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-jar-plugin&/artifactId&
&version&2.4&/version&
&configuration&
&manifest&
&addClasspath&true&/addClasspath&
&classpathPrefix&lib/&/classpathPrefix&
&mainClass&com.mobile263.cloudsimcdr.console.Start&/mainClass&
&/manifest&
&/archive&
&/configuration&
配上参考文章,方便理解:
If U are in a hurry to compile code and there is a big list of Jar files to include in the classpath, there U don&#39;t have to struggle to include the names of all the jar&#39;s in the classpath.
There is a neat trick - use the &java.ext.dirs& JVM param to point to the directory containing the jar files.
java-Djava.ext.dirs = c: \ java \ axis-1_1 \ lib-classpath classes MyJavaClass
Or set the environment variable variable name lib
Variable c: \ java \ axis-1_1 \ lib
java-Djava.ext.dirs =% lib%-classpath classes MyJavaClass
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:208599次
积分:4536
积分:4536
排名:第4552名
原创:165篇
转载:152篇
评论:11条
(8)(10)(15)(8)(12)(5)(16)(3)(7)(10)(4)(7)(10)(10)(13)(8)(7)(13)(24)(2)(6)(2)(4)(16)(1)(2)(6)(35)(14)(63)(57)(17)(8)(18)(4)bat中将目录下的所有jar包加到classpath
bat中将目录下的所有jar包加到classpath
SETLOCAL ENABLEDELAYEDEXPANSION set CLASSPATH=. FOR %%C IN (lib\*.jar) DO set CLASSPATH=!CLASSPATH!;%%C echo %CLASSPATH%
发表评论:
TA的最新馆藏问题:调试过程中遇到URLClassPath,无法调试
描述:见图:后来安装了jad反编译的插件,但是调试时候很混乱。又下载了openjdk****.jar就是包含URLClassPath.java文件的jar包,也不理想。大家有其他好的方式吗?或者在遇到需要调试URLClassPath的时候如何处理的?分享一下。谢过了。解决方案1:引用来自“Monkey”的答案jdk目录下有一个src.zip文件把这个加进入就可以了。netbeans会自动找到这个源码的,eclipse貌似不会。解决方案2:jdk目录下有一个src.zip文件把这个加进入就可以了。netbeans会自动找到这个源码的,eclipse貌似不会。解决方案3:引用来自“Java民工”的答案这个包是JVM的底层代码,你需要下载jvm的源代码,java API src已经解决不了问题了。解决方案4:这个包是JVM的底层代码,你需要下载jvm的源代码,java API src已经解决不了问题了。解决方案5:引用来自“红薯”的答案反编译的东西,看个大概就不错了
解决方案6:反编译的东西,看个大概就不错了
以上介绍了“调试过程中遇到URLClassPath,无法调试”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:/itwd/1249125.html
上一篇: 下一篇:

我要回帖

更多关于 classpath jar包 的文章

 

随机推荐