Spring框架新手求助:编写的Spring程序编译问题咨询
解决Spring纯手动编译(Notepad++编写)的常见问题
嘿,作为Spring纯新手,用Notepad++手写代码确实得留意编译和依赖的细节,我来一步步帮你搞定这个程序的编译问题:
一、先把基础环境准备好
- 确保你的电脑已经装了JDK,并且配置好了
JAVA_HOME环境变量:打开命令提示符(或终端),输入javac -version,能正常显示JDK版本号就没问题。 - 准备好Spring的核心依赖包:至少得有
spring-context.jar、spring-core.jar、spring-beans.jar、spring-expression.jar,还要加一个commons-logging.jar(Spring依赖它做日志输出,缺了会报错)。建议把这些jar包统一放在一个lib文件夹里,方便管理。
二、核对文件与包结构
你的代码声明的包是com.mikadosolutions.training.spring.di,所以必须创建对应的层级文件夹:
你的项目根目录 ├─ lib/ # 放所有Spring依赖jar ├─ com/ │ └─ mikadosolutions/ │ └─ training/ │ └─ spring/ │ └─ di/ │ └─ LaunchTraining.java # 你的Java文件 └─ TrainingConfig.xml # Spring配置文件
一定要保证文件夹结构和代码里的package完全对应,不然编译时会提示“找不到包”。
三、正确的编译命令
因为Spring的类都在外部jar包里,编译时必须告诉javac去哪里找这些类。打开命令提示符,切换到你的项目根目录,然后执行下面的命令:
Windows系统:
javac -cp "lib/*" com/mikadosolutions/training/spring/di/LaunchTraining.java
Linux/macOS系统:
javac -cp lib/* com/mikadosolutions/training/spring/di/LaunchTraining.java
这里的-cp是指定类路径,lib/*表示把lib文件夹下的所有jar包都加入类路径,这样javac就能找到Spring的相关类了。
四、运行程序的命令
编译成功后,会在di文件夹下生成LaunchTraining.class文件,运行时同样要指定类路径:
Windows系统:
java -cp ".;lib/*" com.mikadosolutions.training.spring.di.LaunchTraining
Linux/macOS系统:
java -cp ".:lib/*" com.mikadosolutions.training.spring.di.LaunchTraining
这里的.;(Windows)或.:(Linux/macOS)表示把当前目录(也就是你的class文件所在的根目录)加入类路径,不然JVM找不到你的自定义类。
五、常见坑点排查
- 如果编译时提示“找不到符号:类ApplicationContext”,那肯定是类路径没配置对:检查
lib文件夹里的Spring jar包是否齐全,命令里的路径是否正确。 - 如果提示“包com.mikadosolutions.training.spring.di不存在”,说明你的文件夹结构和代码里的
package声明不匹配,对照上面的结构检查一遍。 - 你的代码里
context.getBea...明显没写完,要补全成完整的getBean方法调用,比如Workshop trainingWorkshop = (Workshop) context.getBean("workshopBean");(这里的workshopBean要和你TrainingConfig.xml里配置的bean id对应),语法错误也会直接导致编译失败。
内容的提问来源于stack exchange,提问作者varsha vengurlekar
相关产品推荐
相关产品推荐

