我正在尝试在linux环境中运行java程序。该计划的结构如下。
src(目录)
main(目录)
- test.java
普通(包)
- a.java
- b.java
Test.java是我的主程序。
我使用以下命令从src目录级别运行程序。
javac -cp“../../lib/netcdf.jar:/common/*.java”main / test.java
我收到与找不到的包相关的错误,并且找不到它下面的所有类。
请你帮我解决一下。
由于
答案 0 :(得分:2)
Java不会扩展glob(*
),除非它是路径的最后一段(在这种情况下它会扩展到所有jar文件)。已经有一段时间了,但我相信你应该能够完全离开*.java
(-cp "../../lib/netcdf.jar:common"
)。并且您似乎正在使用/common
,这会使其在系统的根目录中找到名为common
的文件夹。
答案 1 :(得分:2)
这里有一些问题。
首先,javac compiles 您的类文件(.class)中的代码。它不运行代码,而是将源代码转换为可以运行的形式。
编译代码时,所有.java文件都应根据其包进行结构化。因此,您不能随意决定将一些java文件放在一个文件夹中,而将一些文件放在另一个文件夹中。例如,如果java文件指定“package com.mycompany”并且您的src目录指定为src,那么java文件必须位于“/ src / com / mycompany”中。
在您的代码中,当您需要引用已编译为.class文件的其他代码(通常是外部库)时,您可以指定类路径(这就是为什么它被调用的原因) )。注意,为了清楚起见,我将重复这一点,这不是针对.java文件,而是针对.class文件。有时,许多.class文件被打包到一个存档文件中,称为java存档,或者是“jar”。
另请注意,在unix系统上,“/ common”是绝对path。如果你想要一个相对路径,你应该指定“./common”。
此外,类路径分隔符是“;”不是“:”。
总而言之,如果您的java文件都没有指定显式包,只需将所有.java文件放在同一目录中(我建议使用./src)。然后从src目录运行javac -sourcepath ./src *.java
或简单地javac *.java
。
管理源文件和类文件here还有更多内容。
答案 2 :(得分:2)
我使用以下命令
编译并运行它javac -classpath'。:../../ lib / *'main / test.java
答案 3 :(得分:-3)
java
java
javac
appletviewer
md arivu
cd arivu
gedit ex.java
javac ex.java