在 阿** Ubuntu 服务器 中 , 编译了一个简单的 Java 程序 , 执行时报错 :
root@iZ0jl34etligr9dxlsc52hZ:~# javac TCPServer.java
root@iZ0jl34etligr9dxlsc52hZ:~# java TCPServer
Error: Could not find or load main class TCPServer
root@iZ0jl34etligr9dxlsc52hZ:~#
这是 classpath 环境变量 设置问题 , 字节码类的查找路径设置错误 , 或者设置的有疏漏 ;
查看 /etc/profile 环境变量 :
export JAVA_HOME=/usr/java/default
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:$PATH
重点关注 CLASSPATH 环境变量 ,
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
当 执行 java xxx 命令时 , 查找 xxx.class 字节码文件时 , 到
三个目录中去查找 , 肯定找不到 xxx.class 字节码文件 ;
在 /root 目录 下 执行
javac TCPServer.java
编译 TCPServer.java 源码 , 编译后得到 TCPServer.class 字节码文件 ;
执行
java TCPServer
命令 , 就是 执行编译后的 TCPServer.class 字节码文件 ,
很明显 该字节码文件在 /root 目录下 , 也就是 . 当前文件中 ,
需要 将 .
当前目录添加到 CLASSPATH 环境变量中 ;
修改后的 CLASSPATH 环境变量为 :
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
修改完 /etc/profile 文件后 , 执行
source /etc/profile
命令 , 应用环境变量 ;
然后执行
java TCPServer
即可成功执行该应用 ;
root@iZ0jl34etligr9dxlsc52hZ:~# source /etc/profile
root@iZ0jl34etligr9dxlsc52hZ:~#
root@iZ0jl34etligr9dxlsc52hZ:~# java TCPServer
TCP服务器已启动,监听端口:8080