`
zqjshiyingxiong
  • 浏览: 432502 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

运行一个可执行的Jar时,Classpath的设置无效问题,java的-cp和-jar参数不能

    博客分类:
  • JAVA
阅读更多

情况为:在cmd中,运行java -jar *.jar,出现classnotfound异常,jar中包含lib下面jar下面的class找不到,后来在MANIFEST.MF中添加了Class-Path的配置,但是还是不行?

 

之一,将组件的Jar文件拷贝到公共JRE目录下的lib\ext下。比如,我的JDK1.5装在C: \Program Files\Java下,之下的j2re1.5.0是公共JRE,就将B.jar拷贝到: C:\Program Files\Java\j2re1.5.0\lib\ext 之下,这样在名令行下运行java -jar A.jar就可以。 但这样,我们需要在JRE留下一大坨东西,看起来似乎不太好看。
之二,看Java文档说,manifest文件中还有个属性叫做Class-Path,在A.jar的manifest中加上一句: Class-Path: B.jar 重新打包。B.jar和A.jar在一个路径下,这样相对路径不变的话,B.jar会被ClassLoader照顾到。运行 java -jar A.jar 果然通过!这似乎还不错,我们可以把我们的软件做好,所有的功能分散在各个Jar文件中,但不能动任何一个Jar文件,相对路径一变,还是不行。而且,每 一个Jar文件之间要算好相对路径,每一个都要配置Class-Path,晕也晕死。
一个未完成的想法,看了看Eclipse的文件结构,有一个单独的launcher来启动整个Eclipse。launcher就是一个Jar文件,其中 的manifest并没有写Class-Path,它也能够调用plugins目录下的诸多组件来完成Eclipse的启动,运作。它是如何做的 呢?Launcher中似乎重写了Classloader,可惜弄不到它的源代码,秘密也许就在classloader中。

分享到:
评论

相关推荐

    testng-test-classpath-property-issue-1:一个简单的项目来演示 testng.test.classpath 属性问题

    此存储库仅用于演示testng.test.classpath属性问题。 问题 以下是中testng.test.classpath的... 运行测试: java -cp $CLASSPATH:out org.testng.TestNG testng.xml 使用testng.test.classpath属性重新运行测试: jav

    ansible-javax:Ansible模块,用于执行任意java类或jar

    javax模块为您提供了人类可读的参数名称和本机数据结构值,以使您可以从剧本中运行Java应用程序,从而使这些情况更为合理。 选项: 类路径 JVM应该搜索以找到任何依赖关系的文件系统路径的列表。 模块将获取列表...

    java打包为exe

    制作一个可执行的 JAR 文件包来发布你的程序是 JAR 文件包最典型的用法。 Java 程序是由若干个 .class 文件组成的。这些 .class 文件必须根据它们所属的包不同而分级分目录存放;运行前需要把所有用到的包的根目录...

    corejava的学习笔记

    JAVAC的帮助,输入[sd0807@localhost ~]$ javac ... -javaagent:[=] load Java programming language agent, see java.lang.instrument -splash:<imagepath> show splash screen with specified image

    java jdk8 学习笔记

    Java编译语言将Java代码编译成.class文件(只有一种形式),而C/C++语言将代码编译成01码,不同的操作系统的01码指令不同,这造成了不能跨平台,而Java将这个任务交给JVM,不同操作系统上的JVM将.class文件编译成不同...

    jmx入门例子源码 (含jmxtools.jar包)

    jmx入门的源码例子,包括所需jar包,下载后把jmxtools.jar加入classpath中,然后启动程序, 可以在IE中查看mbean,也可以jconsole中查看

    Linux配置JDK环境变量

    :$JAVA_HOME/lib/mysql-connector-java-3.2.0.jar:$JAVA_HOME/lib/classes12.jar export PATH=$PATH:$JAVA_HOME/bin export JRE_HOME=$JAVA_HOME/jre 保存退出。 # source /etc/profile ##使环境变量生效 # set 要...

    linux下安装ImageMagick-6.5+JMagick -6.4 经测试成功的

    如果要在Web Application Server(Resin,Tomcat),需要再运行时加入参数: -Djmagick.systemclassloader=no 或者在程序中写入:System.setProperty("jmagick.systemclassloader", "no"); 命令行使用方法: convert...

    hsql数据库详细教程

    .1. 学习目的 本文档是针对hSQL 数据库方面的基础学习,为了使项目组成员能够...注意hsqldb.jar 文件的文件路径,最好能放到classpath 里面,或者放到当前路径下. java -cp hsqldb.jar org.hsqldb.util.DatabaseManager

    jstrip:jstrip 是一个 CLI 工具,它可以连接到您的应用程序并检测哪些类是不需要的,并将它们从库中删除以减小文件大小

    jstrip 是一个 CLI 工具,它连接到您的应用程序中并检测哪些类是不需要的,并将它们从库中删除以减小文件大小 用法 java -jar jstrip.jar [-i | --input input.jar] [-c | --mainclass package.Class] <-cp | --...

    aspectwerkz包

    path to the definition file <options> -verbose, -verify, -haltOnError, -genjp, -details <classpath> classpath needed for compilation but not to be transformed (eg -cp myAspects.jar;...

    TestNG安装包

    TestNG是一个Java的框架,所以第一个要求是JDK要安装在你的机器上。 系统要求 JDK 1.5或以上 内存 没有最低要求 磁盘空间 没有最低要求 操作系统 没有最低要求 步骤1 -验证Java安装在你的机器上 现在,打开...

    weka 集成LibSVm所需的jar(wlsvm.zip)

    1.解压wlsvm.zip在lib目录下得到 libsvm.jar和wlsvm.jar两个文件,将其拷贝到weka安装目录下 2.修改位于weka安装目录下的RunWeka.ini文件 修改cmd_default=javaw -Dfile.encoding=#fileEncoding# -Xmx#maxheap# -...

    java笔试题算法-jahmm:隐马尔可夫模型在Java中的实现

    java笔试题算法贾姆 Jahmm是一个 Java 库,实现了与 Hidden Makov 模型(简称 HMM)相关的各种知名算法。 库的源代码可用; 它在 GPL 下获得许可(请参阅资源/复制文件)。 这个库简短而简单。 它是为了清楚起见而写...

    dragon-fractal:使用LWJGL的龙形分形视图

    这可以通过将CLASSPATH环境变量设置为包含jar文件夹或在构建过程中进行设置来完成: javac -cp LWJGL_2.9.1/jar/* DragonFractal.java 跑步: 除了CLASSPATH,要运行显示,还必须将本机库添加到VM。 java -cp ....

    DevTools:随时随地存储和构建您的开发环境

    在项目类路径中包含mysql-connector-java-8.0.11.jar和jansi-1.17.1.jar(将CLASSPATH变量添加为环境变量以与cmd一起运行) 编译源代码并运行(如果使用javac进行编译,则必须进行打包-在CLASSPATH中包含src目录或...

    JavaPI:Java实现,它使用Chudnovsky算法检索最多k位的PI值

    JavaPI用法./gradlewgradle run在您自己的程序中使用模块创建jar文件gradle jar # ...} 编译并运行程序javac -d bin -cp '.:./lib/org.alanzheng.jar' <PATH>java -classpath 'bin:./lib/org.alanzheng.jar' 笔记j

    hbase-custom-replication-endpoint-example:hbase-custom-replication-endpoint-example

    这是一个关于如何创建和使用自定义复制端点的示例。 用法 簇 mvn clean package 将 hbase.replication=true 添加到 hbase-site.xml 将 jar 复制到每个区域服务器上的 lib 目录 重启区域服务器 java -cp $(hbase ...

    jdbc连接数据库的方式2

    MySQL目前提供的java驱动程序为Connection/J,可以从MySQL官方网站下载,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驱动程序为纯java驱动程序,不需做其他配置。 2、动态指定classpath 如果需要执行...

    crystalball:在 Apache Hadoop MapReduce 中实现的朴素贝叶斯文本分类器

    CrystalBall - Apache Hadoop MapReduce 中的朴素贝叶斯文本分类器 创建者:徐敏 日期:2015年6月1日 如何使用该程序 构建程序 ./build.sh 将在bin/创建一个 jar ... java -cp bin/crystal.jar:$(hadoop classpath) \

Global site tag (gtag.js) - Google Analytics