【问题标题】:Java Compiler Issue: cannot find symbolJava 编译器问题:找不到符号
【发布时间】:2014-03-12 02:13:01
【问题描述】:

我正在尝试将字符串格式化为日期,但出现 java 编译器错误:

代码片段是:

String value = String.valueOf(entry.getValue());
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
//String dateInString = value;
SimpleDateFormat parse = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
if (isFirst){
   Date date = parse.parse(value);
   //Then I'll just put the date variable into a cell in the html table. 

我得到的错误:

找不到符号

 [javac] symbol  : constructor SimpleDateFormat(java.lang.String,java.util.Locale)
     [javac] location: class com.lb.base.util.extra.SimpleDateFormat
     [javac]                             SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
     [javac]                                                          ^

我在声明新的 SimpleDateFormat 的时候都得到了这个。我已经检查过导入不是问题。对它是什么感到很困惑..为什么我会收到这个“找不到符号”的错误?

【问题讨论】:

  • "我已经检查过导入不是问题" => 你确定吗? => location: class com.lb.base.util.extra.SimpleDateFormat
  • 您导入了错误的 SimpleDateFormat

标签: java date symbols


【解决方案1】:

谢谢大家,我通过注释掉第一个导入来修复它 com.lb.base.util.extra.SimpleDateFormat

并添加

import java.text.SimpleDateFormat;

在它下面。猜猜我们不能让两个导入同时发生。

【讨论】:

  • 注意您是否使用了 IDE 的自动完成功能。有时您可以获得与您真正想要的相同类别的其他包。
【解决方案2】:

您的导入似乎已关闭。你想使用 java 的 SimpleDataFormat 而不是 com.lb.base.util.extra 。

【讨论】:

    【解决方案3】:

    显然您正在尝试导入 com.lb.base.util.extra.SimpleDateFormat

    您的意思是导入 java.text 吗?如果是,请尝试更改为以下内容:

    import java.text.SimpleDateFormat;

    或者改变你调用构造函数的那一行:

    java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);

    【讨论】:

    • 使用 new.java.text.SimpleDateFormat 给出错误“不兼容的类型”
    • 找到:java.text.SimpleDateFormat [javac] 需要:com.lb.base.util.extra.SimpleDateFormat
    【解决方案4】:

    您的代码中的某些内容,或者您​​使用的代码,非常奇怪地期望一个非常标准的类的非标准版本。您应该搜索此导入语句的源代码:

    import  com.lb.base.util.extra.SimpleDateFormat;
    

    或者对于一个类/java文件命名 SimpleDateFormat.java

    如果没有直接访问您的计算机,这很难诊断,但您似乎正在尝试使用两个具有完全相同名称的类。

    另一个想法:而不是这个

    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
    

    尝试使用显式包名绕过导入语句:

    xbn.text.SimpleDateFormat formatter = new xbn.text.SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
    

    我在这里假设您想要使用标准的 Java 版本。

    这是一个链接,其中包含一些可能具有指导意义的信息:

    https://www.google.com/search?q=is+already+defined+in+a+single-type+import+%5Bjavac%5D+import

    【讨论】:

    • 我明白了。但是当我尝试时,我得到了这个错误.. [javac] /path to filename.java:6: com.lb.base.util.extra.SimpleDateFormat is already defined in a single-type import [javac] import java.text .SimpleDateFormat; [javac] ^
    • 是的,我做到了。但后来我又得到了找不到符号错误。 [javac] 符号:构造函数 SimpleDateFormat(java.lang.String,java.util.Locale) [javac] 位置:类 com.lb.base.util.extra.SimpleDateFormat [javac] SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM -dd", Locale.ENGLISH);
    • 希望我的回答的最新更新对您有所帮助。这是一个有趣的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 2019-05-31
    • 2013-12-06
    • 1970-01-01
    相关资源
    最近更新 更多