java的新手,所以用cmd编译弄脏了。为实例化的类获取“找不到符号”。请帮忙! :)
用于数据库查询的MovieDAO类实例化了MovieDetails和MovieInfo。
目录结构:在项目的根文件夹下,让src \ com \ library \ model包含MovieDAO.java,MovieDetails.java,MovieInfo.java。
已编译MovieDetails和MovieInfo。 .class文件位于classes \ com \ library \ model中。这也是MovieDAO类的目标目录。
MovieDAO:
package com.library.model;
和
import com.library.model.*;
命令提示符位于根文件夹(Project)。输入命令:
javac -classpath C:\Users\Sudipto\Desktop\.....\mysql-connector-java.jar:classes:. -d classes src\com\library\model\MovieDAO.java
编译错误:
....MovieDAO.java:25: error: cannot find symbol
MovieDetails movieDetails = new MovieDetails();
^
与MovieInfo相同。显然,我遗失了一些小事。无法弄清楚是什么。
答案 0 :(得分:0)
从src目录运行javac并将src \ com \ library \ model.MovieDAO.java更改为com \ library \ model \ MovieDAO.java。
例: Source Dir:D:\〜\ JavaSamples \ src
Classes Dir:D:\〜\ JavaSamples \ classes
所以当你尝试从src目录编译如下:
D:\~\JavaSamples\src>javac -classpath ../classes -d ../classes com\library\model\MovieDAO.java
答案 1 :(得分:0)
确保classes
文件夹位于当前目录中,因为您在类路径中只包含:classes:
。
如果classes
文件夹不在当前目录中,则在类路径中包含classes
文件夹的绝对(或)相对路径。像
javac -classpath c:\...\connector.jar:.\classes: -d <target>
(or)
javac -classpath c:\...\connector.jar:c:\project\classes: -d <target>
答案 2 :(得分:0)
Windows中的路径分隔符是分号(;),而不是Unix中的冒号(:)。此外,无需将当前目录(。)放在类路径上。如果是我,我会把类路径放在引号中,只是为了确保我不会意外地引用带空格的路径,但那部分由你决定。
如果您希望java编译所有未编译的源代码,请将src添加到类路径中。
javac -classpath "C:\Users\Sudipto\Desktop\.....\mysql-connector-java.jar;classes;src" -d classes src\com\library\model\MovieDAO.java
否则,如果你肯定想要使用已编译的类而不是重新编译MovieDetails
和MovieInfo
的源代码,那么就离开src。
javac -classpath "C:\Users\Sudipto\Desktop\.....\mysql-connector-java.jar;classes" -d classes src\com\library\model\MovieDAO.java
最后,如果MovieDao
位于com.library.model
,则无需导入com.library.model.*.