Eclipse外的Classpath问题:Win7命令行运行Java代码失败
解决Windows命令行运行EMF Java代码的类路径问题
兄弟,太懂你这种Eclipse跑顺风顺水,一到命令行就卡壳的糟心情况了!核心原因就是Eclipse帮你悄悄搞定了依赖jar包的类路径配置,但命令行得咱们手动把这些路径喂给javac和java命令。结合你的EMF代码场景,给你一步步捋清楚怎么解决:
第一步:先把依赖的EMF jar包找齐
你的代码用到了org.eclipse.emf.ecore.util.EcoreUtil和org.eclipse.emf.common.notify.Notifier,所以至少需要这两个核心jar包:
org.eclipse.emf.ecore.jar(通常带版本后缀,比如org.eclipse.emf.ecore_2.26.0.v20220913-0747.jar)org.eclipse.emf.common.jar(同理可能带版本号)
你可以从这两个地方找:
- 你的Eclipse项目目录:如果是手动添加的依赖,大概率在项目的
lib文件夹里 - Eclipse安装目录的
plugins文件夹:直接搜索jar包名称就能定位到
把找到的jar包复制到和MakeUniqIDs.java同目录的libs文件夹里(自己新建一个就行,方便管理)。
第二步:编译代码(javac命令)
打开Windows命令行,切换到你的Java文件所在目录,执行下面的编译命令:
javac -cp ".;libs\*.jar" MakeUniqIDs.java
命令细节说明:
-cp是-classpath的简写,用来指定编译时需要的类路径.;代表当前目录(必须加,不然javac找不到你自己写的Java文件)libs\*.jar匹配libs文件夹下所有jar包,不用一个个手动罗列,省心省力
如果jar包数量少,也可以手动指定具体jar包名称(适合需要精确控制的场景):
javac -cp ".;libs\org.eclipse.emf.ecore_2.26.0.v20220913-0747.jar;libs\org.eclipse.emf.common_2.26.0.v20220913-0747.jar" MakeUniqIDs.java
第三步:运行编译后的class文件(java命令)
编译成功后,目录下会生成MakeUniqIDs.class文件,再执行下面的运行命令:
java -cp ".;libs\*.jar" MakeUniqIDs
注意这里的类路径要和编译时保持一致,同样不能漏了当前目录.,不然Java找不到你的class文件。
为啥Eclipse能正常运行?
Eclipse在你配置项目构建路径的时候,已经把这些EMF的jar包添加到了项目的类路径中。不管是编译还是运行,Eclipse都会自动把这些路径注入到后台执行的命令里,相当于帮你做了手动指定类路径的脏活累活,所以你在Eclipse里完全不用操心这事~
内容的提问来源于stack exchange,提问作者Brian Nolan
相关产品推荐
相关产品推荐

