-
2021-03-08 03:27:16
我使用spring mvc + spring boot hibernate。在我运行应用程序之前突然出现这个错误。下面是错误mesage得到错误java:找不到符号类
C:\用户\ User_2 \ PDRM \ SRC \主\的java \ COM \示例\ RegisterController.java 错误:(23,19)的java:无法找到符号 符号:类Default_profilesRepository 位置:包com。示例 错误:(33,13)的java:无法找到符号 符号:类Default_profilesRepository 位置:类com.example.RegisterController
这里RegisterController类
package com.example;
import com.example.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.WebRequest;
import javax.validation.Valid;
import java
更多相关内容 -
javac错误: 找不到符号或程序包XXX不存在
2021-07-09 17:53:33有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...前言:基础不牢,地动山摇。从开始学习语言,就使用IDE集成开发工具编写代码,一个按钮,就可以解决编译和运行的所有问题,就像是汽车中的自动档一样。它隐藏了许多重要的细节,其实开发工具编译、运行使用的就是JDK中的javac和java。我们也可以直接使用这些工具来编译和运行我们的代码,期间,根定会遇到很多有趣的问题,解决这些问题,有助于我们了解本质和提升能力。
一 问题发生
如下图所示,使用编译工具javac编译源文件时发生了问题:程序包XXX不存在;找不到符号,主要是类名和方法名找不到。
二 问题解决
原因可能有三个。如果只是出现了问题“错误:找不到符号”,那么原因可能是你没有在源文件中通过import关键字导入该类;如果同时出现问题“程序包XXX不存在”,找不到依赖的文件。如果不是以上两个原因,那可能是你源文件中的类名书写有误。
1. 未使用import关键字导入该类
解决:导入即可,例如import javax.servlet.*;
2. 使用时类名书写错误
解决:检查你在源文件中使用的类名或者方法名是否和导入的类一致,不一致则修改。
3. 未找到依赖的类
在介绍前,我们先来了解一些专业术语和javac命令的使用方法。
如下图所示,我了方便说明,我新建了一个helloworld项目,类MyApp依赖了两个类,分别是自定义的
com.company.util.Say
和来自第三发jar包的edu.princeton.cs.algs4.StdOut
,调用的函数都是简单的打印输出。
MyApp.javapackage com.company.app; import edu.princeton.cs.algs4.StdOut; import com.company.util.Say; public class MyApp { public static void main(String args[]) { StdOut.print("The third party lib: Hello World!"); Say.print("My own lib: Hello World!"); } }
Say.java
package com.company.util; public class Say{ public static void print(String words){ System.out.println(words); } }
helloworld为项目根目录,src为源文件根目录,out\classes为源文件编译后输出的根目录.
全限定类名:包名+类名,一个类的包名体现在操作系统中是对应的目录,例如,MyApp.java 定义了package com.company.app; 所以MyApp.java应该在com\company\app目录下,这部分目录结构应该看成是和MyApp.java文件是一体的。理解这一点很重要,javac和java查找类都是根据全限定类名的。还有在下文提到的当前目录,即命令运行时所在的目录。例如,运行命令
C:\Users\gzn\helloworld>javac src\com\company\app\MyApp.java
其中“C:\Users\gzn\helloworld
”就是当前目录。
javac命令的使用方法
javac <options> <source files>
<options>:
-classpath (等同-cp)<路径> 指定查找用户类文件和注释处理程序的位置件所,默认当前目录,即命令运行时所在目录
-sourcepath <路径> 指定查找输入源文件的位置,默认当前目录,即命令运行时所在目录
-d <目录> 指定放置生成的类文件的位置,默认源文件所在位置
<source files>
需要编译的源文件注意:jdk中的函数库lib称为Java的标准库,指定了JAVA_HOME环境变量后就可以使用了,编译和运行会自动在相应位置查找依赖的类。而第三方库(如mysql-connector-java-5.1.40.jar)和用户自己定义的类库 在编译和运行时,需要在-cp类加载路径参数中指明库的位置。
下面将通过错误在现的方式,一步步得出解决问题的最佳实践。
第一步,在项目根目录helloworld下运行编译命令,发现自定义和第三方的程序包都没有找到,进而其包中的类也找不到,所以下面也出现了错误:找不到符号。
我们先来解决找不到第三方程序包edu.princeton.cs.algs4的问题,由于我们在运行javac命令时,没有通过参数-classpath指定字节码类文件(后缀.class)的查找路径,因此会使用操作系统环境变量中定义的CLASSPATH(如果定义了的话)。我们先假设没有定义该环境变量,那么就要从当前目录下查找字节码类文件,即从helloworld\目录下查找edu
princeton.cs.algs4.StdOut(对应与操作即,edu\princeton\cs\algs4\StdOut.class),可想而知,根本不存在该目录及文件。我们在回过头来看看操作系统的环境遍量,如下图所示
变量值中的点“.”代表当前目录,我们已经得知,当前目录下找不到程序包。接着回去%JAVA_HOME\lib\dt.jar和%JAVA_HOME\lib\tool.jar中寻找程序包edu.princeton.cs.algs4,显然也是查找不到的,因为此程序包位于helloworld\libs\algs4.jar中。所以,可以把该路径加入到系统环境变量中,但是此方法太麻烦,不可能每次添加依赖都去设置一下环境变量,因此不推荐使用。那么可以通过使用-classpath参数设置程序包所在的jar,此方法是官方推荐的。
第二步,在项目根目录helloworld下运行编译命令,并使用-classpath参数
我们自定义的类的程序包不存在,原因有二:1.源文件还没有编译 2.编译后的字节码文件未添加到类查找路径“第三步,在helloworld\src源文件根目录下运行编译命令”
可以看到我们自定义的程序包即使用的类不再有问题,但是第三方程序包又找不到了。我们先来分析为什么自定义的程序包及类没有问题,编译时,遇到语句import com.company.util.Say
,先去classpath下查找,由于没有配置环境变量或显示的使用-classpath参数,所以在当前目录helloworld\src下,查找com.company.util.Say(对应于文件系统,com\compnay\util\Say.class)显然不存在。然后,去sourcepath(由于没有指定-sourcepath参数,所以sourcepath为当前目录,即helloworld\src)下查找com.company.util.Say(对应于文件系统,com\compnay\util\Say.java),可以查找到,于是就进行了编译。由于没有指定编译输出目录参数-d,因此,编译后的字节码文件放在了与源文件相同的目录下,即com\compnay\util\Say.class。然后,再重新在classapth下(即当前目录helloworld\src下)就可以找到程序包及类文件了。对于没有依赖第三发程序包的情况,在源文件根目录下运行编译命令,不会出现题目中的问题。
但是,我们依赖的第三方程序包及类文件,由于没有通过参数-classpath指定,又找不到了,因此,我们需要在-classpath参数中指定当前目录和第三方程序包及类所在目录。
第四步,在“helloworld\src源文件根目录”下运行编译命令,并使用-classpath参数
命令:C:\Users\gzn\helloworld\src>javac -classpath .;C:\Users\gzn\helloworld\libs\algs4.jar com\company\app\MyApp.java
(图片不清数,点击图片可以使图片变清晰,或者看命令!)
其实,第四步还可以优化,我们希望helloworld\src源文件下只存在源文件,即编译输出到一个固定的目录,如out\classes,不在输出到默认的目录,这样可以使得项目的结构根清晰,同时classpath中的当前目录应该替换为out\classes,还需要使用-\sourcepath指定源文件根目录,不在使用当前目录为源文件根目录。
第四部优化,同时是最佳实践,在helloworld\src源文件根目录,下运行命令,并使用-classpath参数
命令:
C:\Users\gzn\helloworld>javac -sourcepath src -classpath out\classes;libs\algs4.jar -d out\classes src\com\company\app\MyApp.java
(图片不清数,点击图片可以使图片变清晰,或者看命令!)
对于同时依赖自定义和第三方类文件的情况,推荐建议使用这种方法和类似的目录结果。另外补充说明,现在classpath的out\classes存在com.company.util.Say.class文件,sourcepath的src存在com.company.util.Say.java文件,在编译时,会检查Say.java在编译后是否存在更新,如果有更新,则则先编译,然后使用out\classes下的com.company.util.Say.class文件,如果不存在更新,则直接使用。
总结
情况 解决方式 依赖自定义的类 在源文件根目录下运行命令 ,例如 C:\Users\gzn\helloworld\src>javac com\company\app\MyApp.java
依赖自定义类和第三发jar包 在源文件目录下运行命令,使用classpath参数,使用默认sourcepath源文件路径,默认d编译输出路径,即当前路径,例如 C:\Users\gzn\helloworld\src>javac -classpath .;C:\Users\gzn\helloworld\libs\algs4.jar com\company\app\MyApp.java
依赖自定义类和第三方包优化,最佳实践 在源文件目录下运行命令,使用classpath参数,使用sourcepath参数,使用d参数,例如 C:\Users\gzn\helloworld>javac -sourcepath src -classpath out\classes;libs\algs4.jar -d out\classes src\com\company\app\MyApp.java
注:-d中目录必须先手动创建
三 其他
欢迎阅读,其他相关文章:
-
idea找不到符号 问题 ,但代码能跳转,方法是存在的。只是找不到
2021-11-23 11:07:28D:\009protobuff\grpc-java-1.42.0\grpc-java-1.42.0\examples\src\...java: 找不到符号 符号: 方法 awaitQuiescence(int,java.util.concurrent.TimeUnit) 位置: 类型为java.util.concurrent.ForkJoinPool的变量 e...D:\009protobuff\grpc-java-1.42.0\grpc-java-1.42.0\examples\src\main\java\io\grpc\examples\hedging\HedgingHelloWorldClient.java:183:13
java: 找不到符号
符号: 方法 awaitQuiescence(int,java.util.concurrent.TimeUnit)
位置: 类型为java.util.concurrent.ForkJoinPool的变量 executor把当前工程加入编译路径就行了。
-
java 找不到符号解决方法
2021-04-17 11:02:21java 找不到符号java初学者,CT类里的gai()和mian()前提示错误找不到符号,自己改了半天不行,求大神指导importjava.util.*;publicclassCT{publicstaticvoidmain(String[]args)throwsException{Scannerscan=new...java 找不到符号
java初学者,CT类里的gai()和mian()前提示错误找不到符号,自己改了半天不行,求大神指导
import java.util.*;
public class CT{
public static void main(String[] args)throws Exception
{
Scanner scan=new Scanner(System.in);
boolean b=true;
while(b){
System.out.println("*****欢迎进入食堂点餐系统*****");
System.out.println(" 1.盖饭类");
System.out.println(" 2.小碗菜");
System.out.println(" 3.面食类");
System.out.println(" 4.其他");
System.out.println(" 5.退出");
System.out.print("请选择:");
int a=scan.nextInt();
switch(a)
{
case 1:
gai();
break;
case 2:
break;
case 3:
mian();
break;
case 4:
break;
case 5:
b=false;
break;
}
}
Thread.sleep(5000);
System.out.println("谢谢使用!");
}
}
class gai{
public void gai(){
Scanner scan1=new Scanner(System.in);
boolean c=true;
while(c){
System.out.println(" 1.宫保鸡丁盖饭");
System.out.println(" 2.地三鲜盖饭");
System.out.println(" 3.土豆牛肉盖饭");
System.out.println(" 4.鱼香烘蛋盖饭");
System.out.println(" 5.葱爆羊肉盖饭");
System.out.println(" 6.重新选择");
System.out.print("请选择:");
int d=scan1.nextInt();
switch(d)
{
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("请稍等...");
break;
case 6:
c=false;
break;
}
}
}
}
class mian{
public void mian(){
Scanner scan2=new Scanner(System.in);
boolean e=true;
while(e){
System.out.println(" 1.红烧牛肉面");
System.out.println(" 2.茄子鸡丁面");
System.out.println(" 3.羊肉面");
System.out.println(" 4.清汤面");
System.out.println(" 5.西红柿鸡蛋面");
System.out.println(" 6.重新选择");
System.out.print("请选择:");
int f=scan2.nextInt();
switch(f)
{
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("请稍等...");
break;
case 6:
e=false;
break;
}
}
}
}
分享到:
------解决方案--------------------
没检查括号是否匹配,大概调整了下方法的位置:
import java.util.*;
public class CT{
public static void main(String[] args)throws Exception
{
Scanner scan=new Scanner(System.in);
boolean b=true;
while(b){
System.out.println("*****欢迎进入食堂点餐系统*****");
System.out.println(" 1.盖饭类");
System.out.println(" 2.小碗菜");
System.out.println(" 3.面食类");
System.out.println(" 4.其他");
System.out.println(" 5.退出");
System.out.print("请选择:");
int a=scan.nextInt();
switch(a)
{
case 1:
gai();
break;
case 2:
break;
case 3:
mian();
break;
case 4:
break;
case 5:
b=false;
break;
}
}
Thread.sleep(5000);
System.out.println("谢谢使用!");
}
//方法移动到这里,并增加static
public static void gai(){
Scanner scan1=new Scanner(System.in);
boolean c=true;
while(c){
System.out.println(" 1.宫保鸡丁盖饭");
System.out.println(" 2.地三鲜盖饭");
System.out.println(" 3.土豆牛肉盖饭");
System.out.println(" 4.鱼香烘蛋盖饭");
System.out.println(" 5.葱爆羊肉盖饭");
System.out.println(" 6.重新选择");
System.out.print("请选择:");
int d=scan1.nextInt();
switch(d)
{
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("请稍等...");
break;
case 6:
c=false;
break;
}
}
}
//方法移动到这里,并增加static
public static void mian(){
Scanner scan2=new Scanner(System.in);
boolean e=true;
while(e){
System.out.println(" 1.红烧牛肉面");
System.out.println(" 2.茄子鸡丁面");
-
Java错误:找不到符号,也找不到原因
2021-03-06 02:08:11错误:error: cannot find symbol出现的内容不起作用:如果我写:“ InvoerVakhandler扩展了boven”,则该错误消失了,但是随后我得到了一个无限循环,最后程序崩溃并说堆栈溢出错误。如果我尝试更改boven类中的“}... -
编译java代码时报错找不到符号
2021-02-12 15:04:46译一段java代码时,提示“错误: 找不到符号”,如下:D:\practicejava>javac PrintArray.javaPrintArray.java:4: 错误: 找不到符号System.out.println("Array number:" + Arrays.toString(testArr));^符号: 变量 ... -
maven install报错:找不到符号
2022-04-10 13:42:21在进行项目打包的时候发现执行maven install会出现报错:找不到符号 [ERROR] /Library/project/work/fantu_java/digitalenterprise_business/bladex-biz/blade-service-api/blade-fleet-basic-api/src/main/java/org... -
java错误:找不到符号
2021-02-12 15:17:40问题描述编译一段java代码时,提示“错误: 找不到符号”,如下:(推荐:java视频教程)D:\practicejava>javac PrintArray.javaPrintArray.java:4: 错误: 找不到符号System.out.println("Array number:" + Arrays.... -
IDEA编译代码报错,找不到符号:找不到符号包
2019-01-24 09:31:08IDEA编译代码报错,找不到符号:找不到符号包 在使用IDEA的时候,经常出现过找不到包或者找不到符号的情况,可以尝试以下几种方式来解决 1:之前我保存有个工具类,刚好项目中要用到。我就引用了整个工具类。就是... -
java编译时找不到符号,怎么处理
2021-02-12 15:04:51已采纳java编译时提示找不到符号的解决方式如下:方法一:进入d:/web/wsh下: javac a.java然后退出wsh目录即进入d:/wsh下 javac wsh/b.java即可编译成功!方法二:通过使用javac -classpath(cp)参数进入d:/web /wsh下... -
maven 模块打包 找不到符号
2019-12-28 17:08:56今天,要对之前的一个老系统改造,在改造过程当中,遇到maven打包找不到符号,具体报的错误如下所示 说实话,解决这个错误花费了很长时间,所以特此记录下来,留着做警惕。 因为要改造的系统是一个一体化(没有分模块),... -
java找不到符号解决办法
2022-04-04 10:22:20一、java找不到符号 如果你的代码里没有报错,明明是存在的。但是java报错找不到符号。像下面这样子。 二、解决步骤 1.清除编码工具缓存 本人用的idea, eclipse清除缓存方式有需要的可以百度一下! 2.如果是mavne... -
运行java代码时出现找不到符号错误怎么解决
2021-02-28 16:25:16运行java代码时出现找不到符号错误怎么解决发布时间:2020-06-23 11:37:00来源:亿速云阅读:113作者:Leah运行java代码时出现找不到符号错误怎么解决?针对这个问题,今天小编总结了这篇文章,希望能帮助更多想解决... -
什么会导致Java中找不到符号错误?
2021-04-15 14:09:44每当您需要在当前程序中使用外部类/接口(用户定义的或内置的)时,都需要使用import...您将看到一个异常提示“找不到符号……”。示例在下面的示例中,我们尝试从键盘(System.in)中读取一个表示用户名的字符串值。... -
解决gradle下找不到符号错误
2022-03-28 19:58:34解决gradle下找不到符号错误 一、问题描述 在写代码的时候,发现编译的时候报了找不到符号错误 这个类是在common下的tools包里,项目中server依赖于common,我在server中注入AppealTool类时,报了这个错误。 ... -
java 错误找不到符号_了解Java找不到符号错误消息
2020-09-12 04:54:40java 错误找不到符号 When a Java program is being compiled, the compiler creates a list of all the identifiers in use. If it can't find what an identifier refers to (e.g., there is no declaration ... -
错误: 找不到符号 符号: 类 ActivityMainBindingImpl
2019-12-06 13:53:07错误如下图 这个是databinding 使用错误引起的 我的错误是因为 自己写...布局和代码里面名字不一样 就是 2个里面的名字要一样 ,代码中 View 如果忘记填写也是会出现同样的错误.............. ... -
Java里编译找不到符号怎么办
2021-11-20 21:17:37java中编译找不到符号以及无法转换 -
java: 找不到符号 符号: 变量 log
2021-11-25 10:56:17- 知乎今天到工作室比较晚,在电脑前吃着早饭,看到提示IDEA提示升级,寻思已经有好久没有升过级了。一样等着,就升级下吧。 升级完毕重启之后,突然发现好多错误,原来的应用也没法启动了。仔细一看报错信息,是... -
Idea编译:Java找不到符号
2021-11-10 16:34:27在使用idea编译运行程序时,有时会出现‘Java找不到符号’的报错,一般可采取以下几种方法: 1、选择相应的模块,使用maven的reload project 2、重启idea 3、设置统一的编码,一般为UTF-8 4、重新build 5、经过... -
Gradle 项目 在 IDEA 中运行,出现找不到符号错误
2020-09-28 20:22:44出现 “ 错误,找不到符号 ” 字样,同时报错一堆,但代码在其他电脑上成功运行过。 问题原因 IDEA工具的Lombok插件问题,导致无法识别。 解决方法 1.首先下载或者更新Lombok插件,选择File->Settings-... -
Idea编译提示Java找不到符号解决方式
2022-04-17 20:15:30运行项目时Idea报错,提示找不到符号,但是这个类在项目里是存在的,网上找了很多文章都没解决,浪费了一个下午终于弄好了,记录一下。 Error:(119, 13) java: 找不到符号 符号: 类 Car 位置: 类 ... -
java: 找不到符号
2021-12-01 16:49:47java:找不到符号的解决办法 -
javac 找不到符号
2019-02-20 16:14:07问题场景:两个java文件A,B,... 但是不能运行,报错无法加载主类, 这种情况我就不继续研究了, 我不认为会出现一个项目会用到另外一个项目的文件。 就这样吧 -
IDEA 程序包不存在,找不到符号但是明明存在对应的jar包(问题分析及解决方案)
2021-03-14 11:28:23环境IntelliJ IDEA 2020.1JDK1.8前提概要问题1和问题2其实是同一个问题,但是表现上有一点不一样具体是如何引起该问题,尚不清楚,特此...existent location:类路径条目指向不存在的位置 程序包不存在 找不到符号... -
解决idea导入gradle项目,报找不到符号问题
2020-11-18 16:15:57前言: idea导入gradle项目,运行项目,结果报错或者导包找不到… 问题: 解决: 勾选上,即可 -
java: 错误: 找不到符号
2022-02-07 14:33:38java: 错误: 找不到符号 编译代码,报错截图如下 解决方式思路:如果有很多的‘java: 错误: 找不到符号’,说明这几个位置都有一个共性的问题,都用到了同一个东西,随便找一个错误追踪进去,找错误原因 1.idea... -
解决 IDEA 报错:找不到符号
2021-05-27 16:45:36遇到过几次IDEA 报错 找不到符号,在网上搜索了很多方法,始终无法解决问题 1,重启 2,修改编码 UTF-8 3,清理缓存重启 4,maven clean,重新编译 都没有解决问题 最后我打开文件目录,手动删除 target ...