`
soulmachine
  • 浏览: 112300 次
  • 性别: 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 JAR文件。JAR...

    java命令行辅助工具

    总结来说,Java命令行辅助工具是一个实用的开发工具,它通过自动化Java源代码的编译和运行,减少了开发者在命令行上的操作,提升了开发效率。对于初学者和频繁进行命令行操作的开发者来说,这样的工具无疑是一个很好...

    Java命令行classpath的设置

    在没有具体代码的情况下,我们假设它是用来演示如何通过Java命令行设置classpath来运行包含数据库操作的Java程序。 在Windows系统中,类路径可以通过以下两种方式设置: 1. **环境变量设置**: - 打开系统属性,...

    Java命令行运行参数说明大全.txt

    ### Java命令行运行参数详解 #### 一、概述 Java作为一种广泛使用的编程语言,其运行依赖于Java虚拟机(JVM)。为了优化JVM的性能,开发者可以通过命令行传递一系列参数来控制JVM的行为。本文将详细介绍Java命令行...

    java的几个命令行参数

    Java 命令行参数中最基本的参数是运行 Class 文件。使用 Java 命令行参数可以执行带 main 方法的 Class 文件。基本语法为:java <CLASS 文件名>,其中 CLASS 文件名不带文件后缀。例如,要执行 Test.class 文件,只...

    java命令行编译全

    本文将深入探讨如何在命令行环境下编译和运行包含包结构的Java程序。 首先,Java中的包(package)是用来组织类的一种方式,它帮助避免命名冲突并提供更好的代码管理。例如,在给定的例子中,我们有两个类——`A....

    java命令行文件管理器

    在提供的压缩包文件`CommandLineStuManagement`中,可能包含了源代码、编译后的class文件、README文档或其他辅助文件。解压后,你可以查阅源代码来进一步了解其工作原理,或者直接运行程序进行实际操作。如果包含...

    java命令行编译说明

    当开发者编写完Java代码后,需要将其编译成字节码(.class文件),然后再由JVM解释执行这些字节码。这一编译过程通常可以通过Java Development Kit (JDK)中的`javac`命令完成。 #### Java命令行编译基础 在命令行...

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

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

    Java反编译工具把.class文件转换为.java文件

    Java作为一种广泛使用的编程语言,其编写的程序通常会被编译成字节码(.class文件),这些文件可以在任何支持Java虚拟机(JVM)的平台上运行。然而,有时候我们需要查看或理解这些.class文件中的具体逻辑,这就需要...

    Java 命令行工具

    Java命令行工具是Java开发中的基础部分,它们允许开发者在没有图形用户界面(GUI)的情况下执行各种任务。这篇博文可能探讨了如何利用Java的命令行工具进行程序的编译、运行和其他相关操作。在Java中,命令行工具...

    Java 命令行以及Java工具总结

    开发者使用它将.java源文件编译成.class字节码文件,以便能够在JVM上运行。 2. java:Java应用程序的启动器。通过它可以启动Java应用程序,包括应用程序的主类和其他依赖。 3. javadoc:API文档生成器。它能从Java...

    Java 命令行运行参数大全

    ### Java命令行运行参数详解 #### 一、概述 Java作为一种广泛应用的编程语言,其运行依赖于Java虚拟机(JVM)。为了更好地控制Java应用程序的运行环境,开发者可以通过指定一系列命令行参数来调整JVM的行为。本文将...

    java程序命令行下的执行

    `javac` 是Java编译器,用于将Java源代码(.java文件)编译成字节码文件(.class文件),而 `java` 命令则负责加载并运行这些字节码文件。 ##### javac命令详解 - **语法**:`javac [选项] <源文件名>.java` - `...

    Java类动态加载(一)——java源文件动态编译为class文件

    这篇博客“Java类动态加载(一)——java源文件动态编译为class文件”可能主要探讨了如何在运行时将Java源代码(.java)编译成对应的字节码文件(.class),并将其加载到Java虚拟机(JVM)中。以下是对这个主题的详细解析...

    命令行下jar打包及运行

    通过以上步骤,我们不仅学习了如何在命令行环境下编译Java源代码、创建JAR文件,而且还掌握了如何通过修改`Manifest`文件来让JAR文件能够直接运行。这种方法对于那些需要频繁构建和部署的应用来说非常实用,同时也...

    浅谈为什么java命令运行class文件出现异常共7页.p

    Java命令行运行class文件是Java开发中的基本操作,主要用于测试和执行编译后的Java程序。然而,有时在尝试运行class文件时可能会遇到各种异常情况,这些异常可能是由于多种原因引起的。这里我们将深入探讨可能导致...

    jar在命令行下运行空指针异常解决

    然而,在某些情况下,当尝试通过命令行运行这些JAR文件时,可能会遇到空指针异常(NullPointerException, NPE)的问题。本文将详细探讨导致此类问题的原因,并提供解决方案,特别是关于如何正确配置Java环境变量来避免...

Global site tag (gtag.js) - Google Analytics