【发布时间】:2013-03-12 00:33:08
【问题描述】:
我能够在 Eclipse 中编译我的 Main.java 文件而没有任何问题。
在 Main.java 我有
package com.selenium.zLoadProfilerPkg;
在其他 3 个文件中我也有
package com.selenium.zLoadProfilerPkg;
但是,当我将整个结构上传到 linux 并尝试编译它时,出现错误:
[sgalkov@zpub zLoadProfilerPkg]$ pwd
/home/sgalkov/zpp_tech_git_checkout/profiler/zLoadProfiler/zLoadProfiler/src/com/selenium/zLoadProfilerPkg
[sgalkov@zpub 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
[sgalkov@zpub 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.class 不是“额外”类,它是一个内部类(通常)。 Main.java 中有内部类吗? (甚至是匿名内部类?)
-
此外,如果您需要在 *nix shell 中定期构建它,您通常会编写一个小脚本来处理类路径等。或者你可以使用 ant/maven/etc。另一种选择(如果您没有在 *nix 上定期构建它)将只是(咳嗽)从 Eclipse 中导出它(因为您说它在 Eclipse 中工作,所以导出为 JAR)。从 IDE 导出不是一个好习惯,但如果您需要一次性或很少使用它,它会起作用。
-
感谢我找到了内部类
标签: java linux command-line