大家好,我的问题是这样的,我在G:/javaTest文件下建立的Hello.java,源码如下:
package gdgz.lwj;
public class Hello{
public static void say(){
System.out.println("hello,java!");
}
public static void main(String args[]){
Hello.say();
}
}
当我在G:/javaTest 目录下执行 javac -d . Hello.java文件后,再执行 java gdgz.lwj.Hello 执行成功,但是当我进入G:/javaTest /gdgz/lwj目录(也就是Hello.class文件所在目录) 执行 java Hello时就G:/javaTest 出错了,具体如下
G:\javaTest>java gdgz.lwj.Hello
hello,java!
G:\javaTest>cd gdgz
G:\javaTest\gdgz>cd lwj
G:\javaTest\gdgz\lwj>java Hello
Exception in thread "main" java.lang.NoClassDefFoundError: Hello (wrong name: gdgz/lwj/Hello)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: Hello. Program will exit.
我们知道如果刚才的Hello.java文件没有带包名,也就是package内容,我们是可以在.class文件所在目录去运行的,我不明白的就是为什么带了包名后了就不能在.class文件所在的目录下去运行,请大家指教。
相关推荐
- 指定输出目录:使用选项`-d`指定输出文件所在的目录,如`jad -d test *.class`将把反编译后的文件存放在名为`test`的目录中。 - 递归处理子目录:若想对整个包含多个子目录的项目进行反编译,可以使用`-r`选项,...
在实际开发中,我们可能需要反编译.class 文件以便于修改或 debugging。下面将详细介绍.class 文件反编译到.java 文件的过程,包括反编译工具的使用和反编译后的修改、再编译等步骤。 一、反编译工具的选择 在反...
- 在 `.class` 文件所在目录创建一个名为 `manifest.txt` 的文件。 - 在文件中添加以下内容:`Manifest-Version: 1.0` - 将文件重命名为 `manifest.mf`。 2. **使用 `manifest.mf` 文件**: - 执行 `jar` 命令...
打开之后找到 要修改提示信息 的class文件 这里找到的是GenEntity 找到对应需要修改的代码所在的方法名 我这里包含提示信息的这段代码在方法 getAllDataBase() 如下图: 2.用jd-gui或者winrar把GenEntity.class 解压...
编译成功后,会在同一目录下生成名为“Test.class”的文件,这个文件包含了由源代码编译得到的字节码。 3. **运行程序**: - 执行字节码文件:通过“java Test”命令来运行编译好的“Test.class”文件。这里需要...
将class文件打包成jar文件是Java开发中常见的需求,尤其在使用WebService的SOAP协议时,为了实现远程调用,往往需要将本地的类文件(.class)打包成jar包进行分发。本文将深入探讨这一过程,包括手动压缩和利用...
本文将详细介绍如何在Eclipse中使用插件实现这一功能,以及一种名为JD的jar包反编译查看工具。 首先,我们来看一下"Eclipse查看jar包class文件源码插件"。Eclipse中常用的插件有JD-Eclipse和Decompiler。JD-Eclipse...
首先,我们要明白什么是.class文件和.java文件。在Java编程中,程序员编写的是.java源代码文件,这些文件经过Java编译器(javac)编译后,会生成对应的.class文件,这是Java虚拟机(JVM)能够执行的二进制格式。然而...
然而,有时我们可能需要查看或理解已编译的.class文件,因为它们是Java源代码(.java)经过编译后的二进制形式,不包含可读的源代码。这时,我们就需要用到反编译工具,将.class文件转换回.java源代码。本文将详细介绍...
在Eclipse中,每个Java项目都有一个名为"bin"或"classes"的默认输出目录,这是编译后.class文件的存放位置。你可以通过以下步骤查看或更改这个路径: 1. 在Eclipse的工作区中,选择你的Java项目。 2. 右键点击项目...
此外,强调能很好地显示文件所在的项目目录,表明该工具在展示代码结构时具有良好的上下文关联性,有助于开发者追踪代码在整个项目中的位置和作用。 标签中的".class 文件"是指Java的编译结果,每个类在编译后都会...
如果我们在 cmd 下运行 java 命令,需要确保当前目录是 Java 源文件所在的目录,这样生成的 Class 文件也将在该目录下,java 命令将可以正确地找到该 Class 文件。 在 cmd 下运行 java 命令时,需要注意当前目录...
3. 使用`javac`编译:打开命令行终端,导航到`.java`文件所在的目录,然后输入`javac 文件名.java`命令。这将编译指定的`.java`文件,生成对应的`.class`文件。如果源代码中有多个类,每个类都会生成一个`.class`...
在Java开发过程中,有时我们需要查看或分析这些Class文件,以理解程序运行原理、调试或逆向工程。"java class文件查看工具"就是用于这样目的的专业软件,它提供了查看和解析Class文件内容的功能。 1. **Class文件...
Java类文件(class文件)是Java程序运行的基础,它们包含了机器可执行的字节码。然而,这些文件通常是二进制格式,对于人类来说难以直接阅读和理解。这就是反编译工具如Xjad的重要性所在。Xjad是一款专门用于将Java ...
JD-GUI就是这样一款强大的工具,专为Java程序员设计,帮助他们解析.class文件并将其转化为可读的Java源代码。 JD-GUI是一个独立的图形用户界面应用,它提供了直观的界面来快速查看和分析.class文件。通过使用JD-GUI...
描述中提到的使用方法极其简单:第一步,将这个“class文件编译利器”放置在待反编译的`.class`文件所在的目录下;第二步,直接双击运行该工具,它会自动扫描并处理目录下的所有`.class`文件,生成对应的源代码文件...
- `Main-Class`: 主类的全限定名称,即包名加类名。 - `Class-Path`: 项目运行时所需的其他jar包的路径。需要注意的是,路径之间使用空格分隔,并且路径必须是相对于JAR文件的位置。 - 如果`Class-Path`中的依赖项较...
1. **Java Jar 包**:jar文件是Java的一种标准打包格式,它可以包含编译后的.class文件、资源文件以及一个名为`MANIFEST.MF`的元数据文件。 2. **Bat 文件**:批处理文件(.bat)是一种文本文件,它包含了一系列...