因为尝试将运行结果通过管道命令保存,所以尝试在命令行(不借助lde来运行java代码,结果折腾了半天)
仿照的是eclipse创建文件目录的方式
最终解决方法是:
#/bin/bash root_dir=`pwd` echo $root_dir src_dir=$root_dir"/src/com/bobo/lda/" bin_dir=$root_dir"/bin" file_name=LdaGibbsSampler javac -d $bin_dir $src_dir"$file_name.java" java -classpath $CLASSPATH":./bin" "com.bobo.lda."$file_name ~
注意带有包层次的在运行java命令的时候,
(1)文件名不能包括.java后缀
(2)javac -d 选项按照对应的包层次创建.class文件
(3) 带有包层次的类文件在利用java命令运行的时候,必须考虑进包的层次(不能视为简单的目录层次,单独通过一个文件名来运行)
另外,注意:
(1)一个java的源文件(即一个.java文件)可以包含多个类定义,但最多只能包含一个public类定义,如果java源文件中包含public类定义,则该源文件的文件名必须和这个public类的类名相同。
(2)可以通过java命令行命令向java的main函数传递参数,方法是
java [options] .class文件名 参数1 参数2 。。。
如:上面的例子就可以用:
#向main()传递参数 java -classpath $CLASSPATH":./bin" "com.bobo.lda."$file_name arg1 "arg2"
如果参数中包含空格,使用“”将其括起来