要求:


仅命令行,即没有IDE
不想使用classpath参数
作业系统: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


有任何想法吗?

最佳答案

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"

关于classpath - 用CLASSPATH环境变量替换classpath参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8584916/

10-13 08:34