java.lang.NoSuchMethodError: main Exception in thread "main"
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方法。
还是没解决 。请教大虾了。。
什么原因?怎么改? --------------------编程问答-------------------- 把参数 null 换成Locale.getDefault()就可以了、不知道能不能满足你的要求、、、 --------------------编程问答-------------------- 重新编译这个类就可以了。应该是刚才写的文件,没有重新编译,你java时是运行以前的java class文件。 --------------------编程问答--------------------
LZ再查一下CLASSPATH的这个环境变量,如果开头没有 .; 这两个符就加上它,这是让java首先在当前目录搜索.class文件,然后才搜索后面的路径。 --------------------编程问答-------------------- 加上那个也不行。(直接报错)
重新编译;如何重新编译?
用eclipse工具。如何重新编译。
是吧class文件夹里的class文件删了。然后报错吗??
不行。该试的都试了。 百度google了一上午了。。没用的。
--------------------编程问答--------------------
这种做法我也想过。。
但是如果执行其他的一个程序就没问题呀。。
控制台输出一句话 就没事。
--------------------编程问答-------------------- 我特怀疑。是版本的问题吗??但是也查看了是1.6的呀。。
用的jdk也不是eclipse自带的。是自己下载的呀。
哎。。 --------------------编程问答--------------------
--------------------编程问答-------------------- format有两种参数的重载
//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);
}
}
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 也可以认为是字符串
编译器应该不会知道调用那个方法 --------------------编程问答-------------------- 首先楼主的源程序是没法编译通过的,错误提示为对format的引用不明确。解决办法为将format方法的第一个参数设置明确的值,可以改为Locale.getDefault()或其他值,运行正确,输出日期
楼主再试一下 --------------------编程问答-------------------- 你这个编译就通不过,先试试这个:
public static void main(String[] args) {
Date date = new Date();
String dates = String.format("%tF", date);
System.out.println(dates);
}
如果还不行 那是你环境的问题了 --------------------编程问答-------------------- 我真无语了
我真想把图片粘贴出来看看。
如果加了Local jvm所处的环境。就报错;
如果设为null就没事。
还有朋友说这个程序没有编译。
怎么肯能呢。用了这么长时间的java了
没有编译我就运行。我不是很二吗?
我还是感觉环境的问题。。
--------------------编程问答-------------------- 哪位大侠 给试试这段程序。到底是啥原因。。
程序也不是很多。放在你们的环境里面运行一下看看
不胜感激
谢谢了。 --------------------编程问答--------------------
我就是试过了才把程序给你的,下面是控制窗口的信息(一开始是没修改的情况)
符号: 类 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>
--------------------编程问答--------------------
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 --------------------编程问答--------------------
--------------------编程问答--------------------
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都可以 --------------------编程问答--------------------
你还用的javac呀。。我在工具里面呢。好吧我再试试吧
谢谢了 。
--------------------编程问答-------------------- 换成jdk5.0试试!
补充:Java , Java SE