-
2021-03-06 02:08:11
错误:
error: cannot find symbol
出现的内容不起作用:
如果我写:“ InvoerVakhandler扩展了boven”,则该错误消失了,但是随后我得到了一个无限循环,最后程序崩溃并说堆栈溢出错误。
如果我尝试更改boven类中的“}”符号并将其放置在文本的末尾,那么我什至会收到更多错误消息。
问题: 我必须在代码中进行哪些更改才能使其正常工作?
注意: 我是Java的新手,我知道有更多类似这样的文章,但是由于对Java的了解有限,我无法将它们应用到我的代码中。
如果有人想知道:我正在使用JCreator。
我想做的事情: 我想做的事情很简单。
1)在JTextField中填写一个名称,按Enter,该名称应出现在JTextArea中。名称在JTextArea中之后,JTextField变为空,以便您可以填充另一个名称,依此类推,应该在JTextArea中出现一个名称列表。(这就是我现在想做的)
2)按下按钮kiesWin,使程序从列表中选择一个随机的人。
3)按下按钮resetL重置程序,这样我就可以列出一个新列表来从中随机选择一个获胜者。
错误出现的部分代码:( 来自InvoerVakHandler类)
String invoer = invoervak1.getText();
以我对Java的有限了解,这个问题可能随处可见,因此万一我将发布整个代码。
整个代码:
import javax.swing.*;
import j
更多相关内容 -
错误: 找不到符号
2019-08-23 21:05:50错误: 找不到符号 符号: 方法 indexOf(String) 位置: 类 StringTest_2 int indexOf(String str)的作用是返回指定字符串第一次出现在字符串的索引错误提示
StringTest_2.java:25: 错误: 找不到符号
while((index=indexOf(key))!=-1)
^
符号: 方法 indexof(String)
位置: 类 StringTest_2
1 个错误代码如下
public class StringTest_2 { public static void main(String[] args) { String str="abcbjfbeabcjefjabcjepofkjabcniabc"; String key="abc"; int count=getKeyStringCount(str,key); System.out.println("count="+count); } public static int getKeyStringCount(String str,String key) { //定义计数器 int count=0; //定义变量记录key出现的位置 int index=0; while((index=indexOf(key))!=-1) { str=str.substring(index+key.length()); count++; } return count; } }
常见的找不到符号就是符合错误或没有定义符号,我检查了符号没有错误,又试了导包,都没用。
后面发现while((index=indexOf(key))!=-1)一句中indexOf(key)没有用str对象调用,int indexOf(String str)的作用是返回指定字符串第一次出现在字符串的索引,没有调用字符串对象就不能就不能实现其功能!解决方法
所以就是将while((index=indexOf(key))!=-1)
改成while((index=str.indexOf(key))!=-1)
-
java错误:找不到符号
2021-02-12 15:17:40问题描述编译一段java代码时,提示“错误: 找不到符号”,如下:(推荐:java视频教程)D:\practicejava>javac PrintArray.javaPrintArray.java:4: 错误: 找不到符号System.out.println("Array number:" + Arrays....问题描述
编译一段java代码时,提示“错误: 找不到符号”,如下:(推荐:java视频教程)D:\practicejava>javac PrintArray.java
PrintArray.java:4: 错误: 找不到符号
System.out.println("Array number:" + Arrays.toString(testArr));
^
符号: 变量 Arrays
位置: 类 PrintArray
1 个错误
代码如下:public class InsertionSort{
public static void main(String args[]){
int testnumber[] = {7,6,4,9,2,1,3,5,8}; // 定义数组
for(int i=0; i
for(int j=i+1; j>0; j--){ // 将被挑选元素的后一个与被
if(testnumber[j-1]
break;
int temp = testnumber[j];
testnumber[j] = testnumber[j-1];
testnumber[j-1] = temp;
}
}
System.out.println("Sorting number:" + Arrays.toString(testnumber)); //打印数组
}
}
报这个错误的原因就是在代码中使用却未在代码中引用Arrays类,在代码中引入即可,如下:import java.util.Arrays;
总结
这里是以Arrays这个类为例子,相同地,遇到此类问题时,先检查下是否引入了相应的类。
更多java知识请关注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中目录必须先手动创建
三 其他
欢迎阅读,其他相关文章:
-
java: 错误: 找不到符号
2022-02-07 14:33:38java: 错误: 找不到符号 编译代码,报错截图如下 解决方式思路:如果有很多的‘java: 错误: 找不到符号’,说明这几个位置都有一个共性的问题,都用到了同一个东西,随便找一个错误追踪进去,找错误原因 1.idea... -
错误: 找不到符号 符号: 类 ActivityMainBindingImpl
2019-12-06 13:53:07错误如下图 这个是databinding 使用错误引起的 我的错误是因为 自己写...布局和代码里面名字不一样 就是 2个里面的名字要一样 ,代码中 View 如果忘记填写也是会出现同样的错误.............. ... -
完美解决错误: 找不到符号 DataBindingComponent
2021-09-29 10:12:31完美解决错误: 找不到符号 DataBindingComponent” 搜了一下这个问题,发现解决方案都不可行,于是,看了一下这个包的来源 发现:databinding文件来自gradle中的aar。 问题发生在: classpath '... -
记一次编译失败解决过程 -- 错误: 找不到符号
2021-10-28 15:30:10报错内容很明确:错误: 找不到符号 ,并指出了所找不到的类和所在行。 分析: 观察发现,无法找到的类、方法、变量都是和蓝牙相关的,所以第一时间反应是使用了定制的Framework。到gradle文件里看了一下配置... -
错误: 找不到符号 java
2020-10-28 12:44:02所以才会在用到其他类的时候找不到想要使用的类。 在搜索了许许多多的回答后,发现几乎都是让你用 javac -d . *.java 的指令在上一级文件目录中来编译java文件。 不过这些都没能够完美解决问题。 其实这都是因为在... -
已解决:Java:3:错误:找不到符号 System.out.printlf
2021-11-18 19:51:09已解决:Java:3:错误:找不到符号 System.out.printlf 项目场景: Java入门程序 HelloWorld 在第一次使用记事本敲java入门程序HelloWord时出现如下错误 问题描述: 错误描述如下: 在命令行内输入如下命令: ... -
Android 错误: 找不到符号 符号: 类 x 位置: 类 MainActivity
2020-02-25 20:44:12Android 错误: 找不到符号 符号: 类 x 位置: 类 MainActivity -
IDEA编译:“错误: 找不到符号”问题解决
2022-05-19 10:37:49正常来讲,注解是不能在编译中发现的。注解是运行时动态去识别的。只有在运行的时候才会被触发。编译是不能识别的。 那么@Builder为什么能够识别呢? ...不信的话你可以找下对应的class文件看看。 -
maven 打包 package 或者 install 出现错误: 找不到符号
2021-03-14 11:28:1830] 错误 找不到符号 [ERROR] hrhrworkfV2.0.0_skg-ehr-webmoduleswebsrcmainjavacomskgcrmexaminwebcontrollerExaminHistoryController.java[70,40] 错误 找不到符号 [ERROR] hrhrworkfV2.0.0_skg-ehr-... -
java初学者,代码模仿别人的,但是提示“错误: 找不到符号”
2019-08-22 16:45:15import java.util.Scanner; public class If{ public static void main...if.java:6: 错误: 找不到符号 int month = input.nextlnt(); ^ 符号: 方法 nextlnt() 位置: 类型为Scanner的变量 input 1 个错误 -
android studio 错误: 找不到符号 符号: 方法 xxx() 位置: 类 xxx
2018-07-23 11:02:24如:错误: 找不到符号 符号: 方法 getLayoutPosition() 位置: 类型为NewsAdapter.ViewHolder的变量 holder 解决方法是: 删除libs文件夹下。。。xxx-v7-recyclerview.jar包 依赖引入jar包 compile('... -
Compilation failure:错误: 找不到符号
2018-10-29 14:10:14Maven项目编译的时候出现编译错误,某个java类找不到,如下所示: [exec] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project zjlh-... -
cmd错误:找不到或无法加载主类 和 错误:找不到符号
2019-06-08 15:21:17背景 在eclipse的文件目录: 这是我写的一个编程基于udp的Ping课设,PingClient.java文件是客户端,PingServer....在eclipse中运行一切正常,没有任何错误! 在文件资源管理器中的目录: 问题及解决方法 ... -
开发错误——错误: 找不到符号 符号: 变量 img 位置: 类 drawable
2019-04-19 15:00:11错误: 找不到符号 符号: 变量 img_1 位置: 类 drawable 我的错误,导入的R文件是子module的R文件 -
Android Studio 打开已有项目,编译出错,提示“错误: 找不到符号”的解决方法
2020-05-22 17:37:32^ 符号: 静态 getCurrentUser 位置: 类 E:\Source\test\SetupWizardExt\app\src\main\java\com\test\setup\LenovoGestureNavigationSettingsActivity.java:51: 错误: 找不到符号 import static android.os.... -
JDK配置之错误:找不到符号System.out.printIn
2020-02-28 00:09:04Test.java:3: 错误: 找不到符号 System.out.printIn(“Hello World”); 解决方法 1.看看 System.out.print 这些字母有没有打错 如果没有那肯定是和我犯了一样的错误 ???? ???? 2.System.out.printIn(“看看print... -
android studio 错误: 找不到符号 符号: 类 Fragment 位置: 程序包 android.support.v4
2020-05-15 23:45:39手机软件作业关于fragment和ViewPager的练习,要把老师的代码放到自己的项目里跑一遍看懂。但是老师的项目是在eclipse里的,直接复制文件过来会报很多错,所以就在as新建,把老师的代码搬过来。 其中老师的用到了一... -
错误: 找不到符号 符号: 变量 CLIP_SAVE_FLAG 位置: 类 Canvas
2022-03-05 13:55:11错误 当API是28时调用canvas.save(Canvas.CLIP_...错误: 找不到符号 符号: 变量 CLIP_SAVE_FLAG 位置: 类 Canvas 解决办法 直接调用 canvas.save(); 原因 Google在android P中删除了canvas.save(int); Google 文档 -
Ant编译过程中出现错误:找不到符号
2018-10-10 13:50:41Ant进行javac编译时,如果出现找不到符号的错误,则可能是缺少类路径,则需要配置依赖的jar包,使用Ant<classpath>的标签,加载依赖的jar包。 如图所示: 但是我遇到的问题是配置的classpath是正确... -
错误: 找不到符号 符号: 变量 activity_main 位置: 类 layout
2018-08-08 22:15:39![这里写图片描述]在组件id没有出错的情况下,导入的R包为android.R,则出现图示错误... -
错误: 找不到符号 符号: 类 SystemProperties 位置: 程序包 android.os
2019-08-09 22:02:54AS中不允许访问SDK中的隐藏类 -
关于maven编译错误:找不到符号问题的总结
2022-04-28 10:52:44近几天在maven编译时遇到找不到符号问题总结一下解决办法 一般情况下会出现如下错误提示 [ERROR]/manager_service/src/main/java/cn/e3mall/service/impl/ItemServiceImpl.java[7,28] 找不到符号 符号: 类... -
【Android Studio】 错误: 找不到符号 符号: 变量 Log 位置: 类 MainActivity
2019-10-16 19:18:30【版本】 android studio:3.3.2 OS:win10 ... 错误: 找不到符号 符号: 变量 Log 位置: 类 MainActivity 【错误代码】 @Override protected void onResume() { super.onResume(); Log.d(TA... -
javac 错误: 找不到符号
2017-04-14 20:33:28以前刚开始学习java的时候,用过记事本写程序,但也只是感受一下,也是写单个类的程序。几年因为联系的需要,谢了两个类,一个类为A,...后来查资料,有人说是这样的(但是我试了一下,并不好用,我截了图放在下面,大