`
带我呼吸2013
  • 浏览: 4469 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

命令行执行class文件和jar文件

阅读更多

一.命令行执行class文件

 

在d:/test/lib目录下,有一个Mains.java文件

 

使用命令javac编译,执行成功:

D:\test\lib>javac Mains.java

 此时使用java命名行运行编译后的class文件,则报NoClassDefFoundError错误:

D:\test\lib>java Mains  
Exception in thread "main" java.lang.NoClassDefFoundError: Mains  
Caused by: java.lang.ClassNotFoundException: Mains  
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)  
        at java.security.AccessController.doPrivileged(Native Method)  
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)  
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)  
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)  
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)  
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 

 出现该异常,是因为环境变量不正确,将命令改为:

D:\test\lib>java -cp . Mains 

 则运行成功。

 

然后修改Mains.java源文件,在其中增加包说明:

package com.zhendao

 重新编译后,使用java -cp . Mains命令,执行失败。原因是名称错误,JVM运行class时,会检查包定义路径下是否有与类名相同的文件。因此这次需要将class文件放在 com/zhendao目录下。即:D:/test/lib/com/zhendao/Mains.class

 

然后在lib目录下重新运行:

D:\test\lib>java -cp . com/zhendao/Mains

 

二.命令行执行jar文件

命令行执行jar文件与执行class文件类似。不过有几个问题要注意一下:

 

1.如果使用eclipse打jar包,一定要设置Main Class:



 设置Main Class目的在于,运行jar包时,才能找到程序执行的入口。设置后,可在jar中(使用解压工具打开)有一个名META-INF的目录,该目录下有一个名为MANIFEST.MF的文件,其内容如下:

Manifest-Version: 1.0  
Main-Class: com.zhendao.Main 

 如果在打jar时没有设置Main Class,则该文件中没有Main-Class:com.zhendao.Main信息。

 

2.如果被执行的jar包还需要依赖其他第三方jar例如日志jar包或者数据库驱动jar包时,则需要手工修改上述的MANIFEST.MF文件,在其中增加Class-Path配置:

Class-Path: log4j-1.2.14.jar ojdbc14.jar  

 注意:多个jar之间使用空格分隔开。

 

然后使用命令执行jar包:

D:\test\lib>java -jar nr_daybar.jar  

 (其中的nr_daybar.jar是笔者打的示例jar包的名字)

另外,在网上查找资料时,看见有其他人并没有在MANIFEST.MF设置Class-Path,而是在执行java运行命令前,设置了环境变量

  • 大小: 60.9 KB
分享到:
评论

相关推荐

    dos命令测试java jar文件 命令行下运行JUnit测试 命令运行java

    dos命令测试java jar文件 命令行下运行JUnit测试 命令运行java

    通过jar命令生成可执行的jar文件

    通过jar生成可执行的jar文件 将您要打包成jar的class文件放到D盘的temp目录下(也可以自定义) 在cmd命令行中键入如下指令: 1. 进入temp目录:cd tmep 2. 输入打包jar命令:jar -cvfe test.jar JFrameDemo3 . (点...

    android反编译(dex2jar.zip)

    1.使用命令行时,当转某个类失败时将继续,而不退出程序 2.解决读取class annotation 的一个问题 Fixes issue 42 ...6. 执行jd-gui,找到刚才生成的JAR文件,打开之。 7. 偷偷乐吧,90%以上的Java源代码跃然眼前.

    java android 反编译工具大全

    smali-1.2.6.jar 用途:.smali文件 转成 classes.dex文件 说明:.smali文件,类似于.class文件,可以用普通文本编辑器查看和修改。 用法举例:命令行:java -jar smali.jar classout/ -o classes.dex ...

    使用C++语言实现基于JVMTI机制的 JAVA 代码 加密保护工具

    本工具是采用jvmti方式对Class文件进行加密,使用C++生成加密和解密库,先用加密库对Jar包进行加密,将加密后的Jar包及解密库文件发布出去,执行时候需要JVM引入解密库文件,解密后执行。c++的.dll文件和.so文件的...

    Android 反编译工具

    dex2jar反编译步骤: 1、把 class.dex 拷贝到 dex2jar.bat 所在目录,直接拖动 class.dex 到 dex2jar.bat,生成 classes...6. 执行jd-gui,找到刚才生成的JAR文件,打开之。 7. 偷偷乐吧,90%以上的Java源代码跃然眼前.

    ODEX文件转换成DEX文件工具

    执行完上面这行命令后,会生成一个out 文件夹里面是android123.odex的class文件。主意,最好把odex文件放到framework目录下执行上面的命令,免得报缺少类文件的错误。 3. 通过class生成classes.dex 文件。 java ...

    android反编译dex2jar

    最后发现dex2jar.bat不能直接拖到命令行执行,必须cd切换到dex2jar.bat所在目录下执行>dex2jar.bat classes.dex才行,希望对大家有帮助.. -------------------------------------------------------------------------...

    odex2dex合并odex和 少dex的apk 为完整的apk文件

    执行完上面这行命令后,会生成一个out 文件夹里面是android123.odex的class文件。主意,最好把odex文件放到framework目录下执行上面的命令,免得报缺少类文件的错误。 3. 通过class生成classes.dex 文件。 java -...

    反编译apk文件(android)

    解压后,将classes.dex拷贝到该目录下,在命令行进入该目录,执行:dex2jar.bat classes.dex,回车,可看到在该目录下生成了classes_dex2jar.jar文件。 3.解压jd-gui-0.3.3.windows.zip,打开此工具,然后选中上一步...

    jd-gui(class文件反编译).rar

    将classes.dex复制到解压后的dex2jar-2.0文件夹下。从命令行进入到该目录,执行 d2j-dex2jar.bat classes.dex 会生成由classes.dex反编译得到的jar文件,classes-dex2jar.jar。

    executable-war-example:示例Maven项目显示了如何使用自定义类加载器使Java WAR文件像JAR一样可执行

    可执行WAR文件的演示这是可执行WAR文件的演示。 它使用自定义类加载器从Web存档(WAR... JAR文件的典型位置没有MANIFEST.MF 。 它包含Main-Class条目,以表示包含main()方法的类。 此外,还有一个Bootstrap类,负责从备

    javaclass源码-classfinder:classfinder库/工具正在帮助Java开发人员在没有提供源代码的情况下轻松地在JVM内

    java类源码类查找器工具介绍 Java Class-Path告诉Java在文件系统上哪里可以找到定义这些类的文件。 对于通用Java应用程序,基于这些路径项序列,从jar文件或类...通过指定jar文件,classfinder支持两种方式。 将ja

    Myeclipse 6 反编译工具安装(jad)

    jad是java的反编译工具,是命令行执行,反编译出来的源文件可读性较高。可惜用起来不太方便。还好找到eclipse下的插件,叫jadclipse,安装好之后,只要双击。tech.Phontol.comclass文件,就能直接看源文件,包括jar...

    jad eclipse 插件

    ad是一个Java的一个反编译工具,是用命令行执行,和通常JDK自带的java,javac命令是一样的。不过因为是控制台运行,所以用起来不太方便。不过幸好有一个eclipse的插件JadClipse,二者结合可以方便的在eclipse中查看...

    我心飞扬java类加密工具2.1(亲测可用)

    本程序可以加密整个目录下的class文件(当选择文件夹的时候,就是加密整个目录下的class文件),或者整个jar文件! 运行方式: 运行时,要能正确的加载加密后的class文件,必须使用我们提供的动态链接库classloader....

    android-svg-code-render:将SVG文件转换为Java源,并在您的Android应用中使用它-Android app source code

    android-svg-code-render 介绍 该项目的目的是创建一个(基于Java的)工具,...该工具可以使用标准Java JAR执行从命令行运行: java -jar android-svg-code-render <inputfile> [-p ] [-c <class>] [-o <outputfi

    smartcliparser:一个强大、灵活且易于使用的 Java 命令行解析器

    gradle jar : 在bin/jar文件夹中构建一个 jar 文件。 gradle test :运行所有单元测试。 gradle -Dtest.single=SomeTest test :运行特定的测试。 gradle javadoc : 生成 Javadoc html 页面。 gradle coverage :...

    java jdk8 学习笔记

    C:\lib\abc.jar 指定jvm寻找.class文件路径的方法有三种,分别是从当前目录下寻找、某个文件夹下寻找或在链接库的jar文件中寻找。 同样,使用命令行指定classpath的方式优先于从系统读取classpath环境变量。 7...

    Simple-Text-Editor:该存储库包含主题为“编程工具-CS382”(Mentor)中针对研究暨项目记录的所有必需文件。

    简单文字编辑器用于HTML验证器/编辑器的编工具项目代码演示下载Jar文件并双击运行或从命令行运行java -jar SimpleJavaTextEditor.jar 或者在提取的文件夹上运行ant,将在该文件中创建一个dist文件夹(注意-使jar文件...

Global site tag (gtag.js) - Google Analytics