java编译时提示找不到符号

2024-12-20 18:23:36
推荐回答(4个)
回答1:

用MYECLIPSE开发环境
通常情况下,在编写java文件时,会有引用到自已定义的一些类,如果按通常的javac *.java的形式来编译会出现找不到符号的错误。
以下提供了两种方法

假如在d:/web/wsh下有a.java和b.java两个文件,在b.java文件中有引用了a.java。下面是编译的方法

1.方法一:
进入d:/web/wsh下: javac a.java
然后退出wsh目录即进入d:/wsh下 javac wsh/b.java即可编译成功!

2.方法二:通过使用javac -classpath(cp)参数
进入d:/web /wsh下: javac a.java
还是在d:/wsh/wsh下: javac -classpath d:/web/wsh b.java
这样也可以编译成功!

以下方法都通过测试!

以下是javac编译的参数:
用法:javac <选项> <源文件>
选项:
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件的位置
-cp <路径> 指定查找用户类文件的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖安装的扩展目录的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-d <目录> 指定存放生成的类文件的位置
-encoding <编码> 指定源文件使用的字符编码
-source <版本> 提供与指定版本的源兼容性
-target <版本> 生成特定 VM 版本的类文件
-version 版本信息
-help 输出标准选项的提要
-X 输出非标准选项的提要
-J<标志> 直接将 <标志> 传递给运行时系统

回答2:

import java.awt.*;
import java.awt.event.*;

public class My extends Frame implements ActionListener {
Button lchange = new Button("变色");
public My() {
add(lchange);
setSize(51, 65);
setVisible(true);
}

public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == lchange)
lchange.setBackground(new Color(125, 255, 34));
}

public static void main(String[] args) {
new My();
}

}
至少这样不会有错了。
错误 一:public My应该是构造函数。不应该是方法。
错误二:if (ae.getSource() == lchange)漏括号
错误三:Button lchange = new Button("变色");放到外面来,不然拿不到
错误四:lchange.setColor(new Color(0,0,255));是不对的。BUTTON类没有这个方法。
建议一:用MYECLIPSE开发环境,没人用CMD里来运行的。
建议二: 要实现变色功能要自己写事件

回答3:

变量 lchange声明在方法My()中,属于局部变量,在其他方法内当然无法访问。该为实例变量吧,就是把Button lchange=new Button("变色");这条语句改为lchange=new Button("变色");然后在public class My extends Frame implements ActionListener{
的下面, public void My(){ 的上面 写上Button lchange;

回答4:

Button类没有setColor()这个方法,ae.gerSource()是方法,后面要加上();
My()是构造方法,没有返回值,前面不能加void ;Ichange是构造函数里局部变量,要想在其他方法里访问,要把它声明为成员变量。