java.lang.NoSuchMethodError: main Exception in thread "main"

前方 2011-08-20 01:59:19

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
Date date = new Date();
String dates = String.format(null, "%tF", date);
System.out.println(dates);
}

}

这是程序。我也从网上查了好久。都说是没有main方法。
还是没解决 。请教大虾了。。
什么原因?怎么改?
...全文
888 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
aqqbjlgu 2011-08-20
  • 打赏
  • 举报
回复
换成jdk5.0试试!
前方 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 gsy999 的回复:]
引用 12 楼 tangyongjundeqian 的回复:
哪位大侠 给试试这段程序。到底是啥原因。。
程序也不是很多。放在你们的环境里面运行一下看看
不胜感激
谢谢了。

我就是试过了才把程序给你的,下面是控制窗口的信息(一开始是没修改的情况)

符号: 类 Date
位置: 类 Test3
Date date = new java.util.Date();
^
……
[/Quote]

你还用的javac呀。。我在工具里面呢。好吧我再试试吧
谢谢了 。
剑神一笑 2011-08-20
  • 打赏
  • 举报
回复
import java.util.Date;
import java.util.Locale;

public class test{
public static void main(String[] args) {
Date date = new Date();
Locale l = null;
String dates = "";
try {
dates = String.format(l, "%tF", date);
} catch (Exception e) {
// e.printStackTrace();
dates = String.format("%tF", date);
}
System.out.println(dates);
}
}

l为null会为空format
看下api
public static String format(String format,
Object... args)使用指定的格式字符串和参数返回一个格式化字符串。
始终使用的语言环境是由 Locale.getDefault() 返回的语言环境。


参数:
format - 格式字符串
args - 在格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。参数是可变的并且可以为 0。参数的最大数目受《Java Virtual Machine Specification》所定义的 Java 数组的最大维度的限制。针对 null 参数的行为依赖于 转换。
返回:
一个格式化字符串
抛出:
IllegalFormatException - 如果格式字符串中包含非法语法,与给定的参数不兼容的格式说明符,格式字符串给定的参数不够,或存在其他非法条件。有关所有可能的格式化错误的规范,请参阅 formatter 类规范的 Details 一节。
NullPointerException - 如果 format 为 null
从以下版本开始:
1.5
另请参见:
Formatter
指针

可以看到
String dates = String.format(Locale.getDefault(), "%tF", date);
和dates = String.format("%tF", date);是一个效果
所以没必要写前面的null都可以
gsy999 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 cbxjj 的回复:]
Java code
import java.util.Date;
import java.util.Locale;

public class thread {
public static void main(String[] args) {
Date date = new Date();
String dates = String.forma……
[/Quote]
剑神一笑 2011-08-20
  • 打赏
  • 举报
回复
import java.util.Date;
import java.util.Locale;

public class thread {
public static void main(String[] args) {
Date date = new Date();
String dates = String.format(Locale.getDefault(), "%tF", date);
System.out.println(dates);

}
}

为null编译不过 jdk1.6
gsy999 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 tangyongjundeqian 的回复:]
哪位大侠 给试试这段程序。到底是啥原因。。
程序也不是很多。放在你们的环境里面运行一下看看
不胜感激
谢谢了。
[/Quote]
我就是试过了才把程序给你的,下面是控制窗口的信息(一开始是没修改的情况)

符号: 类 Date
位置: 类 Test3
Date date = new java.util.Date();
^
1 错误

I:\java>javac Test3.java
Test3.java:10: 对 format 的引用不明确,java.lang.String 中的 方法 format(java.la
ng.String,java.lang.Object...) 和 java.lang.String 中的 方法 format(java.util.Lo
cale,java.lang.String,java.lang.Object...) 都匹配
String dates = String.format(null, "%tF", date);
^
1 错误

I:\java>javac Test3.java

I:\java>java Test3
2011-08-20

I:\java>javac Test3.java

I:\java>java Test3
2011-08-20

I:\java>
前方 2011-08-20
  • 打赏
  • 举报
回复
哪位大侠 给试试这段程序。到底是啥原因。。
程序也不是很多。放在你们的环境里面运行一下看看
不胜感激
谢谢了。
前方 2011-08-20
  • 打赏
  • 举报
回复
我真无语了
我真想把图片粘贴出来看看。
如果加了Local jvm所处的环境。就报错;
如果设为null就没事。

还有朋友说这个程序没有编译。
怎么肯能呢。用了这么长时间的java了
没有编译我就运行。我不是很二吗?

我还是感觉环境的问题。。
jingluo 2011-08-20
  • 打赏
  • 举报
回复
你这个编译就通不过,先试试这个:

public static void main(String[] args) {
Date date = new Date();
String dates = String.format("%tF", date);
System.out.println(dates);
}


如果还不行 那是你环境的问题了
skyWalker_ONLY 2011-08-20
  • 打赏
  • 举报
回复
首先楼主的源程序是没法编译通过的,错误提示为对format的引用不明确。解决办法为将format方法的第一个参数设置明确的值,可以改为Locale.getDefault()或其他值,运行正确,输出日期
楼主再试一下
serbry0033 2011-08-20
  • 打赏
  • 举报
回复
format有两种参数的重载

public static String format(Locale l, String format, Object ... args) {
return new Formatter(l).format(format, args).toString();
}
public static String format(String format, Object ... args) {
return new Formatter().format(format, args).toString();
}

因为后面跟着的是可变数组 对于null可以理解为时Locle 也可以认为是字符串
编译器应该不会知道调用那个方法
gsy999 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tangyongjundeqian 的回复:]
加上那个也不行。(直接报错)
重新编译;如何重新编译?
用eclipse工具。如何重新编译。
是吧class文件夹里的class文件删了。然后报错吗??
不行。该试的都试了。 百度google了一上午了。。没用的。
[/Quote]

//LZ 你在搞笑,你的程序根本就没编译就拿出来说没main方法。
//按下面的程序,粘贴到你的编辑器中,保存后重新编译。
import java.util.*;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Date date = new Date();
String dates = String.format("%tF", date);
System.out.println(dates);
}
}
前方 2011-08-20
  • 打赏
  • 举报
回复
我特怀疑。是版本的问题吗??但是也查看了是1.6的呀。。
用的jdk也不是eclipse自带的。是自己下载的呀。
哎。。
前方 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gsy999 的回复:]
LZ再查一下CLASSPATH的这个环境变量,如果开头没有 .; 这两个符就加上它,这是让java首先在当前目录搜索.class文……
[/Quote]
这种做法我也想过。。
但是如果执行其他的一个程序就没问题呀。。
控制台输出一句话 就没事。
前方 2011-08-20
  • 打赏
  • 举报
回复
加上那个也不行。(直接报错)
重新编译;如何重新编译?
用eclipse工具。如何重新编译。
是吧class文件夹里的class文件删了。然后报错吗??
不行。该试的都试了。 百度google了一上午了。。没用的。
gsy999 2011-08-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 tangyongjundeqian 的回复:]
Java code

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
[/Quote]
  LZ再查一下CLASSPATH的这个环境变量,如果开头没有 .; 这两个符就加上它,这是让java首先在当前目录搜索.class文件,然后才搜索后面的路径。
Fly_m 2011-08-20
  • 打赏
  • 举报
回复
重新编译这个类就可以了。应该是刚才写的文件,没有重新编译,你java时是运行以前的java class文件。
yangyyly 2011-08-20
  • 打赏
  • 举报
回复
把参数 null 换成Locale.getDefault()就可以了、不知道能不能满足你的要求、、、
Java面向对象程序设计》(第2版)课后答案 《Java面向对象程序设计》(第2版)课后答案全文共39页,当前为第1页。《Java面向对象程序设计》(第2版)课后答案全文共39页,当前为第1页。Java面向对象程序设计 《Java面向对象程序设计》(第2版)课后答案全文共39页,当前为第1页。 《Java面向对象程序设计》(第2版)课后答案全文共39页,当前为第1页。 (编著耿祥义X跃平) 习题1 1.James Gosling 2. (1)使用一个文本编辑器编写源文件。 (2)使用Java编译器(javac.exe)编译Java源程序,得到字节码文件。 (3)使用Java解释器(java.exe)运行Java程序 3.Java的源文件是由若干个书写形式互相独立的类组成的。 应用程序中可以没有public类,若有的话至多可以有一个public类。 4.系统环境path D\jdk\bin; 系统环境classpath D\jdk\jre\lib\rt.jar;.; 5. B 6. Java源文件的扩展名是.javaJava字节码的扩展名是.class。 7. D 8.(1)Speak.java (2)生成两个字节码文件,这些字节码文件的名字Speak.class 和 Xiti8.class (3)java Xiti8 (4)执行java Speak的错误提示 Exception in thread "main" java.lang.NoSuchMethodError: main 执行java xiti8得到的错误提示 Exception in thread "main" java.lang.NoClassDefFoundError: xiti8 (wrong name: Xiti8) 执行java Xiti8.class得到的错误提示 Exception in thread "main" java.lang.NoClassDefFoundError: Xiti8/class 执行java Xiti8得到的输出结果 I'm glad to meet you 9.属于操作题,解答略。 习题2 1. D 2.【代码1】【代码2】错误 //【代码3】更正为 float z=6.89F; 3.float型常量后面必须要有后缀"f"或"F"。 对于double常量,后面可以有后缀"d"或"D",但允许省略该后缀。 4.public class Xiti4{ public static void main (String args[ ]){ char ch1='你',ch2='我',ch3='他'; System.out.println("\""+ch1+"\"的位置:"+(int)ch1); System.out.println("\""+ch2+"\"的位置:"+(int)ch2); System.out.println("\""+ch3+"\"的位置:"+(int)ch3); } } 5.数组名字.length 6.数组名字.length 7.【代码1】A,65 【代码2】-127 《Java面向对象程序设计》(第2版)课后答案全文共39页,当前为第2页。《Java面向对象程序设计》(第2版)课后答案全文共39页,当前为第2页。【代码3】 123456.783,123456.78312 《Java面向对象程序设计》(第2版)课后答案全文共39页,当前为第2页。 《Java面向对象程序设计》(第2版)课后答案全文共39页,当前为第2页。 8. 【代码1】false 【代码2】true 【代码3】false 【代码4】3 【代码5】4.4 【代码6】8.8 习题3 输出110 if-else语句书写的不够规X,复合语句缺少大括号"{}",代码不够清晰。 2.你好好酷!! 3. public class Xiti3_3 { public static void main (String args[ ]){ int startPosition=0,endPosition=0; char cStart='а',cEnd='я'; startPosition=(int)cStart; //cStart做int型转换据运算,并将结果赋值给startPosition endPosition=(int)cEnd ; //cEnd做int型转换运算,并将结果赋值给endPosition System.out.println("俄文字母表:"); for(int i=startPosition;i<=endPosition;i++){ char c='\0'; c=(char)i; //i做char型转换运算,并将结果赋值给c System.out.
Java面向对象程序设计》(第版)课后答案 39 / 39 《Java面向对象程序设计》(第版)课后答案全文共39页,当前为第1页。《Java面向对象程序设计》(第版)课后答案全文共39页,当前为第1页。Java面向对象程序设计 《Java面向对象程序设计》(第版)课后答案全文共39页,当前为第1页。 《Java面向对象程序设计》(第版)课后答案全文共39页,当前为第1页。 〔编著耿祥义张跃平〕 习题1 1.James Gosling 2. 〔1〕使用一个文本编辑器编写源文件. 〔2〕使用Java编译器〔javac.exe〕编译Java源程序,得到字节码文件. 〔3〕使用Java解释器〔java.exe〕运行Java程序 3.Java的源文件是由若干个书写形式互相独立的类组成的. 应用程序中可以没有public类,若有的话至多可以有一个public类. 4.系统环境path D\jdk\bin; 系统环境classpath D\jdk\jre\lib\rt.jar;.; 5. B 6. Java源文件的扩展名是.java.Java字节码的扩展名是.class. 7. D 8.〔1〕Speak.java 〔2〕生成两个字节码文件,这些字节码文件的名字Speak.class 和 Xiti8.class 〔3〕java Xiti8 〔4〕执行java Speak的错误提示 Exception in thread "main" java.lang.NoSuchMethodError: main 执行java xiti8得到的错误提示 Exception in thread "main" java.lang.NoClassDefFoundError: xiti8 执行java Xiti8.class得到的错误提示 Exception in thread "main" java.lang.NoClassDefFoundError: Xiti8/class 执行java Xiti8得到的输出结果 I'm glad to meet you 9.属于操作题,解答略. 习题2 1. D 2.[代码1][代码2]错误 //[代码3]更正为 float z=6.89F; 3.float型常量后面必须要有后缀"f"或"F". 对于double常量,后面可以有后缀"d"或"D",但允许省略该后缀. 4.public class Xiti4{ public static void main { char ch1='你',ch2='我',ch3='他'; System.out.println<"\""+ch1+"\"的位置:"+ch1>; System.out.println<"\""+ch2+"\"的位置:"+ch2>; System.out.println<"\""+ch3+"\"的位置:"+ch3>; } } 5.数组名字.length 6.数组名字.length 7.[代码1]A,65 [代码2]-127 《Java面向对象程序设计》(第版)课后答案全文共39页,当前为第2页。《Java面向对象程序设计》(第版)课后答案全文共39页,当前为第2页。[代码3] 123456.783,123456.78312 《Java面向对象程序设计》(第版)课后答案全文共39页,当前为第2页。 《Java面向对象程序设计》(第版)课后答案全文共39页,当前为第2页。 8. [代码1]false [代码2]true [代码3]false [代码4]3 [代码5]4.4 [代码6]8.8 习题3 输出110 if-else语句书写的不够规范,复合语句缺少大括号"{}",代码不够清晰. 2.你好好酷!! 3. public class Xiti3_3 { public static void main { int startPosition=0,endPosition=0; char cStart='а',cEnd='я'; startPosition=cStart; //cStart做int型转换据运算,并将结果赋值给startPosition endPosition=cEnd ; //cEnd做int型转换运算,并将结果赋值给endPosition System.out.println<"俄文字母表:">; for{ char c='\0'; c=i; //i做char型转换运算,并将结果赋值给c System.out.p

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧