我能够在Eclipse中没有任何问题的情况下编译我的Main.java文件。如何使用一个包在linux中编译java文件
里面Main.java我
package com.selenium.zLoadProfilerPkg;
其他3个文件里面我也有
package com.selenium.zLoadProfilerPkg;
但是当我上传的整体结构到Linux,我尝试编译它,我得到错误:
[[email protected] zLoadProfilerPkg]$ pwd
/home/sgalkov/zpp_tech_git_checkout/profiler/zLoadProfiler/zLoadProfiler/src/com/selenium/zLoadProfilerPkg
[[email protected] zLoadProfilerPkg]$ cd /home/sgalkov/zpp_tech_git_checkout/profiler/zLoadProfiler/zLoadProfiler/src/com/selenium/zLoadProfilerPkg/; javac -cp ".:/home/sgalkov/zpp_tech_git_checkout/profiler/selenium-2.30.0/selenium-java-2.30.0.jar:/home/sgalkov/zpp_tech_git_checkout/profiler/selenium-2.30.0/libs/*:/home/sgalkov/zpp_tech_git_checkout/profiler/selenium-2.30.0/selenium-server-standalone-2.30.0.jar:/home/sgalkov/zpp_tech_git_checkout/profiler/browsermob-proxy-2.0-beta-7/browsermob-proxy-2.0-beta-7-sources.jar:/home/sgalkov/zpp_tech_git_checkout/profiler/browsermob-proxy-2.0-beta-7/lib/*:/home/sgalkov/zpp_tech_git_checkout/profiler/zLoadProfiler/zLoadProfiler/src/com/selenium/zLoadProfilerPkg" Main.java
Main.java:54: error: cannot find symbol
BrowsermobProxy bmp = new BrowsermobProxy(PROXY_API_HOST, PROXY_API_PORT);
^
symbol: class BrowsermobProxy
location: class Main
Main.java:54: error: cannot find symbol
BrowsermobProxy bmp = new BrowsermobProxy(PROXY_API_HOST, PROXY_API_PORT);
^
symbol: class BrowsermobProxy
location: class Main
Main.java:310: error: cannot find symbol
HarStorage hs = new HarStorage(HARSTORAGE_HOST, HARSTORAGE_PORT);
^
symbol: class HarStorage
location: class Main
Main.java:310: error: cannot find symbol
HarStorage hs = new HarStorage(HARSTORAGE_HOST, HARSTORAGE_PORT);
^
symbol: class HarStorage
location: class Main
4 errors
[[email protected] zLoadProfilerPkg]$
如果我注释掉“package com.selenium.zLoadProfilerPkg;”在4个文件中的每一个中并逐一编译它们,一切正常。
而且,如果我尝试编译这样说:
cd /home/sgalkov/zpp_tech_git_checkout/profiler/zLoadProfiler/zLoadProfiler/src/com/selenium/zLoadProfilerPkg/;
javac -cp ".\
:/home/sgalkov/zpp_tech_git_checkout/profiler/selenium-2.30.0/selenium-java-2.30.0.jar\
:/home/sgalkov/zpp_tech_git_checkout/profiler/selenium-2.30.0/libs/*\
:/home/sgalkov/zpp_tech_git_checkout/profiler/selenium-2.30.0/selenium-server-standalone-2.30.0.jar\
:/home/sgalkov/zpp_tech_git_checkout/profiler/browsermob-proxy-2.0-beta-7/browsermob-proxy-2.0-beta-7-sources.jar\
:/home/sgalkov/zpp_tech_git_checkout/profiler/browsermob-proxy-2.0-beta-7/lib/*\
:/home/sgalkov/zpp_tech_git_checkout/profiler/zLoadProfiler/zLoadProfiler/src/com/selenium/zLoadProfilerPkg" \
BrowsermobProxy.java HarStorage.java HttpRequest.java Main.java
它编译,但我得到一个额外的类Main.java
rw-r--r-- 1 sgalkov users 1422 Mar 11 20:30 Main$1.class
rw-r--r-- 1 sgalkov users 8264 Mar 11 20:30 Main.class
rw-r--r-- 1 sgalkov users 14864 Mar 11 19:32 Main.java
,我无法运行程序,我得到的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: com/selenium/zLoadProfilerPkg/Main)
at java.lang.ClassLoader.defineClass1(Native Method)
我环顾四周,并尝试各种选项,但不能让这个项目编译并会欣赏任何指针。
Main $ 1。类不是一个“额外”类,它是一个内部类(通常)。你在Main.java中有内部类吗? (即使是匿名的内部类) – 2013-03-12 00:41:28
另外,你通常会编写一个小脚本来处理类路径,如果你需要在* nix shell中定期构建这个脚本。或者你可以使用ant/maven /等。另一种选择(如果你不是经常在* nix上构建它的话)将只是(从Eclipse中导出)(因为你说它在Eclipse中起作用,导出为JAR)。从IDE导出不是一个好习惯,但是如果您需要在一次性或非常罕见的基础上进行操作,它就会起作用。 – 2013-03-12 00:44:42
谢谢我发现内部类 – Kentor 2013-03-12 18:58:30