编译时错误 - 在import java.io.BufferedReader中找不到符号;

Compile time error - can't find symbol in import java.io.BufferedReader;

提问人:Hack-R 提问时间:3/12/2016 最后编辑:launeHack-R 更新时间:3/12/2016 访问量:1419

问:

将 Java 与 NetBeans IDE 结合使用时,我有一个程序,在我编译它之前,它不会给我任何错误或警告,但随后它会告诉我:

error: cannot find symbol
import java.io.BufferedReader;
  symbol:   class BufferedReader
  location: package java.io
1 error

(底部有完整错误)

举个完整的例子,我将使用从我正在使用的插件 CODAPPS 生成的模板,我所做的只是添加行 .示例中未使用导入,但错误与我的程序相同:import java.io.BufferedReader;

StateMachine.java

/**
 * Your application code goes here
 */

package userclasses;
import java.io.BufferedReader;
import generated.StateMachineBase;
import com.codename1.ui.*; 
import com.codename1.ui.events.*;
import com.codename1.ui.util.Resources;

/**
 *
 * @author Your name here
 */
public class StateMachine extends StateMachineBase {
    public StateMachine(String resFile) {
        super(resFile);
        // do not modify, write code in initVars and initialize class members there,
        // the constructor might be invoked too late due to race conditions that might occur
    }

    /**
     * this method should be used to initialize variables instead of
     * the constructor/class scope to avoid race conditions
     */
    protected void initVars(Resources res) {
    }

}

错误:

Updating property file: C:\Users\hackr\Documents\NetBeansProjects\CodenameOne Hello World\build\built-jar.properties
Compile is forcing compliance to the supported API's/features for maximum device compatibility. This allows smaller
        code size and wider device support
Compiling 3 source files to C:\Users\hackr\Documents\NetBeansProjects\CodenameOne Hello World\build\tmp
C:\Users\hackr\Documents\NetBeansProjects\CodenameOne Hello World\src\userclasses\StateMachine.java:6: error: cannot find symbol
import java.io.BufferedReader;
  symbol:   class BufferedReader
  location: package java.io
1 error

编译程序的命令是,当我在 NetBeans 中单击绿色的“播放”按钮时生成的命令是:

ant -f "C:\\Users\\hackr\\Documents\\NetBeansProjects\\CodenameOne Hello World" -Dnb.internal.action.name=run run

java bufferedreader 代号一个

评论

0赞 fge 3/12/2016
这是一个奇怪的错误,因为这个类是由JDK提供的......你能显示用于编译的完整命令吗?
0赞 Hack-R 3/12/2016
@fge 是的,这很奇怪。我认为这就是你要问的,我会把它添加到问题中ant -f "C:\\Users\\hackr\\Documents\\NetBeansProjects\\CodenameOne Hello World" -Dnb.internal.action.name=run run
0赞 laune 3/12/2016
您可以从 java.io 导入其他任何东西吗?来自 java.*?
1赞 Joop Eggen 3/12/2016
人们必须回到 Java 1.0 才能没有.由于这也涉及生成的源代码,因此可能需要注意多项目(生成/编译阶段)。Maven 会很干净。蚂蚁可以做,只要小心一点。java.io.BufferedReader
0赞 Hack-R 3/12/2016
@laune 是的,我想是的。没有在我导入的代码和其他一些东西中实际使用它,我没有收到错误import java.io.ByteArrayInputStream;

答:

4赞 laune 3/12/2016 #1

在查看了 Codename One 的 CODAPPS 网站上的 CODEAPP Java 文档后,一切都很清楚:您不是针对任何成熟的 Java JDK 进行开发或编译,而是针对一个受限的子集进行开发或编译,该子集通过一些用于移动应用程序的东西进行了增强。

不能使用 .使用链接中的 Javadoc 查看您可以使用的内容。java.io.BufferedReader

如果你认为这是值得的,你可以掠夺JDK源代码 - 如果你还没有下载所有的JDK源代码,grepcode会为你找到它。或者看看它,从中学习,然后推出你自己的 - 你可能不需要该类的所有功能。

评论

0赞 laune 3/12/2016
@Hack-R 感谢您的编辑。我终于找到了合适的标签(代号)。
0赞 Hack-R 3/12/2016
太好了,感谢您为我解决本手册。我应该更好地阅读手册;我从来没有怀疑过可以从 Java 中删除功能!
0赞 Shai Almog 3/13/2016
请注意,默认情况下,Codename One 中的所有流都处于缓冲状态,因此 JDK 中不再需要缓冲功能。IO 的许多帮助程序代码都可以通过 Util 类访问。