今天碰到了一个很变态的问题,写了一个很简单的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"
在网上搜索了大半天,大部分说是环境变量,classpath或JDK版本的问题,还有执行时文件名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
javac Welcome.java (得到Welcome.class文件) java Welcome (省略.class) 程序名 Welcome.java 保存位置 d:\javacode 在控制台输出“Welcom to Java!” 3.执行Java程序 1.用记事本编写Java程序 命令行状态下编写Java...
不用开发工具,在命令行下把自己相关的class文件打包成一个jar文件,然后用Java -jar来运行。
本工具是对java class文件进行加密保护的工具!本工具全面支持linux/unix/windows操作系统。 众所周知,java编译后的class文件是一种中间字节字文件, 很容易被反编译工具反编译,而传统的java源代码保护方法基本都是...
举例说明:例如,本加密工具安装在c:\lanswonsoft\java_protect,执行加密后的CLASS文件的命令行如下: java -agentlib:c:\lanswonsoft\java_protect\lanswon <您的CLASS类及参数> 应用场合 独立的应用程序...
主要功能: 1.列出指定路径下的所有Jar包文件 ...4.填写搜索路径是最好不要只填写“E:/”根盘目录,这样在jcreator编译器中可以运行,但是在dos下用java命令提示出错,不知道原因。 5.如出现问题请与我联系qq752304495
简单的Java命令行实用程序,用于报告给定目录下.jar文件中.class文件的版本。 该实用程序有2个参数。 第一个参数是实用程序将在其下扫描.jar文件的目录的名称。 第二个(可选)参数是应报告的最低Java类版本。 ...
本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...
<br>举例说明:例如,本加密工具安装在c:\hideasoft\java_protect,执行加密后的CLASS文件的命令行如下: java -agentlib:c:\hideasoft\java_protect\hidea <您的CLASS类及参数> 应用场合 独立的应用...
智能cli解析器smart-cli-parser 是一个强大、灵活且易于使用的 Java 命令行解析器。构建和开发说明。 构建可执行文件需要 Gradle 2.1+ 版。 签出代码后,导航到顶部文件夹并执行以下命令之一。 gradle compileJava ...
本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...
可以将class文件反编译成java文件 假设将jad.exe安装在f:\java\jad目录下 把要反编译的文件*.class复制到此目录下,接着接以下步骤, 在命令行窗口环境中进入jad目录, 然后运行:jad -s java *.class (附,*.class...
Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...
众所周知,Java编译后的Jar包和Class文件,可以轻而易举的使用反编译工具(如JD-GUI)进行反编译,拿到源码。为了保护自己发布的Jar包和Class文件,采用的方式大多是混淆方式,这种方式对于Class文件的加密是不彻底...
本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...
classfinder库/工具可帮助Java开发人员在没有提供源代码的情况下轻松地在JVM内部或外部查找类。 本手册主要介绍从命令行作为独立应用程序运行的该工具的核心功能。 注意:它仅支持Java 8+(包括Java 11)。 对于以前...
众所周知,java编译后的class文件是一种中间字节字文件,很容易被反编译工具反编译,而传统的java源代码保护方法基本都是采用混淆的方式,但这样会带来很多麻烦,而且也不能真正保护class文件,本工具是对class文件...
IDEA貌似没反编译导出.java这个功能。不过jad其实是一个优秀的反汇编工具,在命令行下也可以使用。不局限于IDEA啊。 你可以在命令行下这么写,比如: jad.exe -r -ff -d src -...所有的java文件将会被放置到src目录下。
Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...
一个类似于javap的java反编译工具,运行速度快,据说Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decomplier、DJ Java Compiler、NMI's Java Class Viewer等反汇编工具都以jad作为核心引擎,只是在jad内核的...