`
soulmachine
  • 浏览: 109625 次
  • 性别: Icon_minigender_1
  • 来自: 湖北武汉
社区版块
存档分类
最新评论

java命令行下运行class文件

阅读更多

今天碰到了一个很变态的问题,写了一个很简单的HelloWord.java,内容如下:
package com.yanjiuyanjiu;

public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}

在eclipse中运行是可以的,但是在命令行下运行总是失败。我的工程位置为 d:/workspace/HelloWorld/。

尝试了很多次,如下

d:/workspace/HelloWorld/bin/com/yanjiuyanjiu/>java HelloWorld

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: com/yanjiuyanjiu/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: HelloWorld. Program will exit.
Exception in thread "main"

d:/workspace/HelloWorld/bin/com/yanjiuyanjiu/>java -classpath .; HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: com/yanjiuyanjiu/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: HelloWorld. Program will exit.
Exception in thread "main"

d:/workspace/HelloWorld/bin/com/yanjiuyanjiu/>cd..

d:/workspace/HelloWorld/bin/com/>cd..

d:/workspace/HelloWorld/bin/>java -classpath .; com/yanjiuyanjiu/HelloWorld 只有这个成功

Hello World!

d:/workspace/HelloWorld/bin/>java -classpath .; com/yanjiuyanjiu/HelloWorld 换了个斜杠就不行了

Exception in thread "main" java.lang.NoClassDefFoundError: com/yanjiuyanjiu/HelloWorld (wrong name: com/yanjiuyanjiu/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: com/yanjiuyanjiu/HelloWorld. Program will exit.
Exception in thread "main"

d:/workspace/HelloWorld/bin/>java -classpath ./com/yanjiuyanjiu/; HelloWorld

Exception in thread "main"java.lang.NoClassDefFoundError: HelloWorld (wrong name: com/yanjiuyanjiu/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: HelloWorld. Program will exit.
Exception in thread "main"

在网上搜索了大半天,大部分说是环境变量classpathJDK版本的问题,还有执行时文件名class后缀不要。我一一试过,都没有解决。最后无意中换了一下命令符的位置,成功了。总结如下:

1. 环境变量,CLASSPATH当然要设置好,执行时不要带class后缀;

2. 路径中的斜杠用“/”而不是“/”;

3. 命令符的当前目录要在包的起点。比如这里应该在 d:/workspace/HelloWorld/bin/>,如果在 d:/workspace/HelloWorld/bin/com/yanjiuyanjiu/>,反而不行,有点“近水楼台不得月”的意思,不知道为什么,还请高手解释一下。

原文地址:http://www.yanjiuyanjiu.com/2011/06/23/javac-mutiple-files/

分享到:
评论

相关推荐

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

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

    Java程序设计基础:使用命令行方式开发Java程序.pptx

    javac Welcome.java (得到Welcome.class文件) java Welcome (省略.class) 程序名 Welcome.java 保存位置 d:\javacode 在控制台输出“Welcom to Java!” 3.执行Java程序 1.用记事本编写Java程序 命令行状态下编写Java...

    命令行下jar打包及运行

    不用开发工具,在命令行下把自己相关的class文件打包成一个jar文件,然后用Java -jar来运行。

    java class加密保护工具

    本工具是对java class文件进行加密保护的工具!本工具全面支持linux/unix/windows操作系统。 众所周知,java编译后的class文件是一种中间字节字文件, 很容易被反编译工具反编译,而传统的java源代码保护方法基本都是...

    Java类加密2.0版本,无限制

    举例说明:例如,本加密工具安装在c:\lanswonsoft\java_protect,执行加密后的CLASS文件的命令行如下: java -agentlib:c:\lanswonsoft\java_protect\lanswon <您的CLASS类及参数> 应用场合 独立的应用程序...

    在jar包中查找class等文件

    主要功能: 1.列出指定路径下的所有Jar包文件 ...4.填写搜索路径是最好不要只填写“E:/”根盘目录,这样在jcreator编译器中可以运行,但是在dos下用java命令提示出错,不知道原因。 5.如出现问题请与我联系qq752304495

    find-class-versions:简单的Java命令行实用程序,用于报告给定目录下.jar文件中.class文件的版本

    简单的Java命令行实用程序,用于报告给定目录下.jar文件中.class文件的版本。 该实用程序有2个参数。 第一个参数是实用程序将在其下扫描.jar文件的目录的名称。 第二个(可选)参数是应报告的最低Java类版本。 ...

    java class加密保护(完全免费) v2.1

    本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...

    Java类加密程序

    <br>举例说明:例如,本加密工具安装在c:\hideasoft\java_protect,执行加密后的CLASS文件的命令行如下: java -agentlib:c:\hideasoft\java_protect\hidea <您的CLASS类及参数> 应用场合 独立的应用...

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

    智能cli解析器smart-cli-parser 是一个强大、灵活且易于使用的 Java 命令行解析器。构建和开发说明。 构建可执行文件需要 Gradle 2.1+ 版。 签出代码后,导航到顶部文件夹并执行以下命令之一。 gradle compileJava ...

    java类加密工具v2.1

    本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...

    java反编译工具(可以集成到eclipse当中)

    可以将class文件反编译成java文件 假设将jad.exe安装在f:\java\jad目录下 把要反编译的文件*.class复制到此目录下,接着接以下步骤, 在命令行窗口环境中进入jad目录, 然后运行:jad -s java *.class (附,*.class...

    JAVA上百实例源码以及开源项目

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

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

    众所周知,Java编译后的Jar包和Class文件,可以轻而易举的使用反编译工具(如JD-GUI)进行反编译,拿到源码。为了保护自己发布的Jar包和Class文件,采用的方式大多是混淆方式,这种方式对于Class文件的加密是不彻底...

    Java类加密工具v2.2(免注册)

    本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...

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

    classfinder库/工具可帮助Java开发人员在没有提供源代码的情况下轻松地在JVM内部或外部查找类。 本手册主要介绍从命令行作为独立应用程序运行的该工具的核心功能。 注意:它仅支持Java 8+(包括Java 11)。 对于以前...

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

    众所周知,java编译后的class文件是一种中间字节字文件,很容易被反编译工具反编译,而传统的java源代码保护方法基本都是采用混淆的方式,但这样会带来很多麻烦,而且也不能真正保护class文件,本工具是对class文件...

    java jad.exe

    IDEA貌似没反编译导出.java这个功能。不过jad其实是一个优秀的反汇编工具,在命令行下也可以使用。不局限于IDEA啊。 你可以在命令行下这么写,比如: jad.exe -r -ff -d src -...所有的java文件将会被放置到src目录下。

    JAVA上百实例源码以及开源项目源代码

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    jad- java反编译软件

    一个类似于javap的java反编译工具,运行速度快,据说Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decomplier、DJ Java Compiler、NMI's Java Class Viewer等反汇编工具都以jad作为核心引擎,只是在jad内核的...

Global site tag (gtag.js) - Google Analytics