用CLASSPATH环境变量替换classpath参数

时间:2011-12-21 03:58:12

标签: classpath java

要求:

  • 仅限命令行,即没有IDE的
  • 不想使用classpath参数
  • OS:OS X v10.6.8

步骤:

  • 设置CLASSPATH环境变量:export CLASSPATH="/path-jar-files-are-at/*"
  • 编译我的java应用程序:javac MyApp.java
  • 启动我的java应用:java MyApp

启动后,出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: MyApp
Caused by: java.lang.ClassNotFoundException: MyApp

使用classpath参数没有此问题

  • 编译我的java应用程序:javac -classpath /path-jar-files-are-at/* MyApp.java
  • 启动我的java应用:java -classpath /path-jar-files-are-at/* MyApp

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

CLASSPATH不应包含尾随的“/ *” - 这不会给你一个有效的类路径。 shell正在扩展/ *并用空格/换行符分隔列表 - 而不是“:”字符。

如果您仍然希望它以这种(动态)方式工作,请尝试以下方法:

export CP=`ls /path-jar-files-are-at/*`; CP=`echo $CP | sed 's/\.jar\s/.jar:/g'`; CP="$CP:/path-jar-files-are-at"