在eclipse中可以运行,但在cmd中错误:找不到符号的解决办法(代码片段)

从零开始的智障生活 从零开始的智障生活     2022-12-28     420

关键词:

一、问题描述

Java环境变量配置完成,在Eclipse中可以运行的程序,但在CMD中运行报错:找不到符号。

 如:创建了一个要求从命令行界面输入参数的java文件[Driver.java]。但是这个文件还有两个相关文件[Summation.java][MutableInteger.java]。而且主类Driver还可以输入命令行参数。

代码如下:

package com.zyx.chapter9.thread;

public class MutableInteger 
	private int value;
	public int getValue() 
		return value;
	
	public void setValue(int value) 
		this.value = value;
	
package com.zyx.chapter9.thread;

import com.zyx.chapter9.thread.MutableInteger;
public class Summation implements Runnable
	private int upper;
	private MutableInteger sumValue;
	public Summation(int upper,MutableInteger sumValue) 
		this.upper = upper;
		this.sumValue = sumValue;;
	

	@Override
	public void run() // 执行这个代码会,创建一个线程。
		int sum=0;
		for(int i=0;i<=upper;i++)
			sum+=i;
		sumValue.setValue(sum);
	
package com.zyx.chapter9.thread;
import com.zyx.chapter9.thread.MutableInteger;
import com.zyx.chapter9.thread.Summation;

public class Driver 

	public static void main(String[] args) 
		if(args.length>0) 
			if(Integer.parseInt(args[0])<0)
				System.err.println(args[0]+"Must be >= 0");
			else 
				MutableInteger sum = new MutableInteger();
				int upper = Integer.parseInt(args[0]);
				// 对实现了Runnable接口的对象创建Thread对象
				Thread thread = new Thread(new Summation(upper, sum));
				thread.start();// 启动这个线程
				// 打印线程运行结果
				try 
					thread.join(); 
					System.out.println("the sum of "+upper+" is "+sum.getValue());
				catch (InterruptedException e) 
			
		
		else 
			System.out.println("Usage:Summation<integer value>");
		
	

在Eclipse运行正常:(因为我没有输入参数)

Usage:Summation<integer value>

但是在CMD中出现了如下情形:

 二、问题原因

这一般是由于有多非JavaAPI函数库依赖项的原因。即在你的代码中,有很多其他自己创建的类或接口。如果单个文件编译,那么就会出现问题。因为javac编译器是要将你的代码编译成JVM可以识别的字节码,然而如果文件中有其他非java API库的依赖项,那么编译器就无法识别,那它就是一串不知道是什么的字符串。

三、解决办法

解决办法就是,将所有依赖项一起编译,按照依赖性依次往后放:

3.1 用命令行按文件名直接编译java文件

在命令行,可以直接进入文件目录D:\\eclipse-workspace\\GSZJ\\src\\com\\zyx\\chapter9\\thread,然后再命令行依次或按依赖顺序编译。

D:\\eclipse-workspace\\GSZJ\\src\\com\\zyx\\chapter9\\thread>javac MutableInteger.java Summation.java Driver.java

3.2 用中间文件编译java文件

新建一个【依赖性文件列表】,名字无所谓,就叫source.txt吧,这些相关文件的绝对路径按行、按依赖性依次写入到这个文件,最先被依赖的文件最先写入。

D:\\eclipse-workspace\\GSZJ\\src\\com\\zyx\\chapter9\\thread\\MutableInteger.java
D:\\eclipse-workspace\\GSZJ\\src\\com\\zyx\\chapter9\\thread\\Summation.java
D:\\eclipse-workspace\\GSZJ\\src\\com\\zyx\\chapter9\\thread\\Driver.java

这样我们就可以直接针对这个文件来运行,在CMD中运行如下指令:

如果你的代码中有中文,那么就要用GBK,当然也可以默认省略这一条。

javac -encoding GBK @source.txt -Xlint:unchecked

四、运行执行

要从命令行,运行java程序要从它包名开始指示。java运行时只会从包名开始识别。可以从java文件的第一行知道该java文件的包名:com.zyx.chapter9.thread。

D:\\eclipse-workspace\\GSZJ\\src\\com\\zyx\\chapter9>java thread.Driver 10
错误: 找不到或无法加载主类 thread.Driver
原因: java.lang.NoClassDefFoundError: com/zyx/chapter9/thread/Driver (wrong name: thread/Driver)

D:\\eclipse-workspace\\GSZJ\\src>java com.zyx.chapter9.thread.Driver 10
the sum of 10 is 55

QEMU 在 Eclipse 中运行正常,但在调试时失败

】QEMU在Eclipse中运行正常,但在调试时失败【英文标题】:QEMUrunOKbyEclipsebutfailwhendebugging【发布时间】:2012-11-2902:19:48【问题描述】:我正在研究QEMU的源代码。我用Eclipse打开它并配置了环境。然后我可以为ARM平台构建它并通过引... 查看详情

模块在 cmd 中有效,但在 Pycharm 中无效

...正在尝试让PostGISshp2pgsql和pgsql2shp模块在PyCharm中工作。我可以让它们在命令提示符下正常工作,但不能在PyCharm中运行我的脚本:\'shp2pgsql\'未被识别为内部或外部命令,可运行的程序或批处理文件。找到的最相 查看详情

java文件在eclipse中可以运行,在cmd中javac命令运行正确,java命令报错

java.java环境配置没问题:142)atjava;javacTestLast:361)atjava;>:TestLast(wrongname.java;>.lang.java;main".NoClassDefFoundError.defineClass(URLClassLoader.checkAndLoadMain(LauncherHelper.run(URLClassLoader:791)atjava.lang.lang.run(URLClassLoader.SecureClassLoader:308)atjava.net.misc.s... 查看详情

我在eclipse中将一个java项目打包成jar文件后,为啥双击它时没反应?但在eclipse中是可以运行的

查看进程发现双击后会有一个javaw.exe运行,但过了一两秒钟就消失了。在打包时也设置了主函数入口了,电脑的环境变量也设置了,求高人指导。参考技术Ajar文件要在命令行里运行,开始->运行(XP)/在搜索程序和文件对话框里-... 查看详情

Hadoop MapReduce 程序在 Eclipse 中运行良好,但在导出到 .jar 文件时运行良好

】HadoopMapReduce程序在Eclipse中运行良好,但在导出到.jar文件时运行良好【英文标题】:HadoopMapReduceprogramrunsfineinEclipsebutnotwhenexportedto.jarfile【发布时间】:2014-09-0415:35:33【问题描述】:在Eclipse中,我从三个目录添加外部库。hadoop... 查看详情

eclipse中如何查看使用的jdk版本?

本人新手,问几个问题1:Eclipse自带JDK吗?电脑没有安装JDK,只安装了Eclipse可以同样使用吗?2:我本地Java安装目录有两个文件夹jdk1.8.0_05和jre8,都是用来干啥的?3:怎么查看Eclipse使用的JDK的版本有两种方法可以查看eclipse中jdk... 查看详情

在 VS2015 中访问类成员时出现运行时错误,但在 Linux 上没有

...17-08-0908:13:20【问题描述】:此代码在Linux上使用g++编译时可以正常工作,但是当我尝试在VS2015(调试和发布)中执行它们时,我收到运行时错误。它出什么问题了?#include"stdafx.h"#inc 查看详情

错误:无法在 Windows cmd 的 PATH 中找到 git

...t\\git-cmd.exe;C:\\Windows\\System32添加到我的路径中,但在尝试运行flutterdoc 查看详情

eclipse中如何查看使用的jdk版本

有两种方法可以查看eclipse中jdk的版本:第一种方法:点击开始--运行--输入cmd--点击确定--在cmd命令行窗口中输入java-version,就可以显示出当前在使用的jdk的版本号了,如下图: 第二种方法:运行eclipse,点击windows--preferences--j... 查看详情

Facebook SDK iOS - 用户照片不会在发布版本中检索,但在调试版本中可以完美运行。 [关闭]

...okSDKiOS-用户照片不会在发布版本中检索,但在调试版本中可以完美运行。[关闭]【英文标题】:FacebookSDKiOS-Userphotosdoesn\'tretrievinginreleasebuildbutworksperfectlyinDebugbuild.[closed]【发布时间】:2016-04-2013:09:41【问题描述】:我遇到了Facebook... 查看详情

为啥在 cmd 中运行 ant sonar 命令时出现错误?

】为啥在cmd中运行antsonar命令时出现错误?【英文标题】:WhyamIgettinganerrorwhilerunningantsonarcommandincmd?为什么在cmd中运行antsonar命令时出现错误?【发布时间】:2019-07-2517:27:38【问题描述】:我正在尝试构建我的ant项目并在sonarqube中... 查看详情

JUnit 测试在 Eclipse 中通过但在 Maven Surefire 中失败

】JUnit测试在Eclipse中通过但在MavenSurefire中失败【英文标题】:JUnittestspassinEclipsebutfailinMavenSurefire【发布时间】:2011-03-2221:25:11【问题描述】:我已经使用JUnit4和spring-test库编写了一些JUnit测试。当我在Eclipse中运行测试时,运行良... 查看详情

javascript 在 mozilla 中运行良好,但在 IE6 中出现未知的运行时错误,为啥?

】javascript在mozilla中运行良好,但在IE6中出现未知的运行时错误,为啥?【英文标题】:javascriptrunningfineinmozillabutgivesunknownruntimeerrorinIE6,why?javascript在mozilla中运行良好,但在IE6中出现未知的运行时错误,为什么?【发布时间】:2... 查看详情

我的 Unity 游戏在测试轨道中运行,但在生产轨道中无法运行

...19-10-2413:03:57【问题描述】:我有一个在内部和alpha上完全可以正常工作的构建,所以我终于上传到生产环境,现在我得到空引用异常错误。如果我从GooglePlay控制台“取消发布”游戏,它会将 查看详情

Torch 在 VSCode 中成功运行,但在 Jupyter Notebook 中出现错误

】Torch在VSCode中成功运行,但在JupyterNotebook中出现错误【英文标题】:TorchisrunningsuccessfullyinVSCodebutgiveserrorinJupyterNotebook【发布时间】:2021-09-1322:34:55【问题描述】:我在使用以下命令创建anaconda虚拟环境后安装了torch:pip3installtor... 查看详情

我用eclipse导出的runnablejar不能双击执行,但在命令行可以用java-jar***.jar运行,这是怎么回事?

该jar文件在别人电脑上是可以双击运行的,说明jar文件没有问题。以前我的电脑上也可以双击执行的,但现在不知道为什么突然不行了,总报错说找不着mainclass。命令行运行就正常。这是什么个情况?为什么在别人电脑上可以双... 查看详情

需要帮助:“错误的架构”导致应用在 iOS 7 中启动时崩溃,但在 iOS 8 中运行良好

...“错误的架构”导致应用在iOS7中启动时崩溃,但在iOS8中运行良好【英文标题】:Needhelp:\'WrongArchitecture\'causingapptocrashwhenlaunchinginiOS7butworksfineiniOS8【发布时间】:2014-11-1614:51:11【问题描述】:我的应用在iOS7.1中启动时崩溃,但在i... 查看详情

eclipse引入外部jar在发布时没有自动带入,导致出现classnofound错误

...中查看发现lib目录中缺少classes12.jar和ojdbc14.jar文件。但在Eclipse和MyEclipse中已经加 查看详情