黑马程序员技术交流社区

标题: 程序报错 [打印本页]

作者: 无奈的年华ˊ    时间: 2014-2-8 20:34
标题: 程序报错
本帖最后由 无奈的年华ˊ 于 2014-2-13 23:07 编辑

程序:↓
class Test
{
         public  static void main(String[] args)
         {
                getStr();
         }
         public static void getStr()
         {
        //定义一个字符串
          String name = "itheima";
                 System.out.print(name);
         }
}

报错:↓
Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name: Tes
t)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

为什么编译的时候没问题,运行就报错呢?


作者: 张志明    时间: 2014-2-8 20:43
  1. class Test
  2. {
  3.          public  static void main(String[] args)
  4.          {
  5.                 Test.getStr();
  6.          }
  7.          public static void getStr()
  8.          {
  9.         //定义一个字符串
  10.           String name = "itheima";
  11.                  System.out.print(name);
  12.          }
  13. }
复制代码


调用静态的方法,用类名加点的方式调用。
否则在main函数里面不知道调用的是哪个类的静态方法~!!!!
希望对你有用
作者: 廉伟杰    时间: 2014-2-8 20:48
这是我运行的程序,没有错误啊

QQ截图20140208204800.png (67.44 KB, 下载次数: 31)

QQ截图20140208204800.png

作者: dongdong5982    时间: 2014-2-8 20:58
我把代码也运行了一下,也没有错误,java.lang.NoClassDefFoundError这个异常前几天我也见了,当时是因为我的环境变量配置错了,修改好环境变量后就行了,DOS窗口得重启才行

程序.jpg (182.25 KB, 下载次数: 40)

程序截图

程序截图

作者: 无奈的年华ˊ    时间: 2014-2-8 20:59
张志明 发表于 2014-2-8 20:43
调用静态的方法,用类名加点的方式调用。
否则在main函数里面不知道调用的是哪个类的静态方法~!!!!
...

哥们、谢谢回答。你这样也可以运行,然后我重新开了个控制台再运行了一次我那个也可以了!搞不明白刚刚为什么报那种错!
作者: 无奈的年华ˊ    时间: 2014-2-8 21:02
廉伟杰 发表于 2014-2-8 20:48
这是我运行的程序,没有错误啊

哥们、谢谢回答。我重新开了个控制台再运行了一次我那个也可以了!搞不明白刚刚为什么报那种错!
作者: 无奈的年华ˊ    时间: 2014-2-8 21:07
dongdong5982 发表于 2014-2-8 20:58
我把代码也运行了一下,也没有错误,java.lang.NoClassDefFoundError这个异常前几天我也见了,当时是因为我 ...

我什么都没动,就重新开了个窗口运行就不报错了,你程序能直接在EditPlus里运行?为什么下面有个提示正常终止。
作者: 廉伟杰    时间: 2014-2-8 21:13
无奈的年华ˊ 发表于 2014-2-8 21:07
我什么都没动,就重新开了个窗口运行就不报错了,你程序能直接在EditPlus里运行?为什么下面有个提示正常 ...

这个正常终止不就是运行结束了,然后终止了,都有的啊
作者: dongdong5982    时间: 2014-2-8 21:14
无奈的年华ˊ 发表于 2014-2-8 21:07
我什么都没动,就重新开了个窗口运行就不报错了,你程序能直接在EditPlus里运行?为什么下面有个提示正常 ...

EditPlus里可以直接编写、运行Java程序,可以练习手敲代码,也没有每次都用DOS窗口的麻烦。我是觉得DOS会用就行了,如果一直用它编译运行的话,就有些麻烦了。
作者: dongdong5982    时间: 2014-2-8 21:17
无奈的年华ˊ 发表于 2014-2-8 21:07
我什么都没动,就重新开了个窗口运行就不报错了,你程序能直接在EditPlus里运行?为什么下面有个提示正常 ...

这是我在网上找到的EditPlus配置Java运行的方法,比较详细,希望对你能有所帮助:


  在配置EditPlus之前是先将JAVA的运行环境安装且调试好,
然后进入EditPlus,从菜单“工具(Tools)”;“配置用户工具...”进入用户工具设置,选择“组和工具条目”中的“Group 1”,点击面板右边的“组名称...”按钮,将文本Group1”修改成“Java编译程序”,点击“添加工具”按钮,选择应用程序,然后就是修改属性:
1. 添加编译功能
“菜单文本”里的内容修改为“Javac”;
“命令”选择安装JDK后的Bin目录中的编译程序javac.exe,我的JDK 安装路径为“C:\rogram

FilesJDKj2sdk1.4.2_08”,那么此路径为“D:\Program Files\Java\jdk1.6.0_10\bin\javac.exe”;
“参数”选择“文件名”,即显示为“$(FileName)”;
“初始目录”选择“文件目录”,显示为“$(FileDir)”;选择“捕获输出”复选框
点击确定。
2. 添加执行功能
点击“添加工具”按钮,选择应用程序,然后就是修改属性:
“菜单文本”里的内容修改为“Java”;
“命令”选择安装JDK后的BIN目录中的编译程序java.exe,路径为“D:\Program Files\Java\jdk1.6.0_10\bin\java.exe”;
“参数”选择“不带扩展名的文件名”,即显示为“$(FileNameNoExt)”;
“初始目录”选择“文件目录”,显示为“$(FileDir)”;选择“捕获输出”复选框,点击确定。
配置完成。
这样当你编完一个程序后,只需打开工具菜单,点击javac就可创建,而不用在doc环境下敲入命令了,当然运行也是在工具中点击java,那么运行结果就出来了。很方便的!

作者: 无奈的年华ˊ    时间: 2014-2-10 21:30
dongdong5982 发表于 2014-2-8 21:17
这是我在网上找到的EditPlus配置Java运行的方法,比较详细,希望对你能有所帮助:

多谢,搞定了,这下省事多了!{:2_36:}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2