0

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]$

「packagecom.selenium.zLoadProfilerPkg;」とコメントアウトすると 4つのファイルのそれぞれで、それらを1つずつコンパイルすると、すべてが正常に機能します。

また、この方法でコンパイルしようとすると、次のようになります。

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)

私は周りを見回してさまざまなオプションを試しましたが、このプロジェクトをコンパイルすることができず、ポインタをいただければ幸いです。

4

3 に答える 3

1
dir=/home/sgalkov/zpp_tech_git_checkout/profiler

cd "$dir/zLoadProfiler/zLoadProfiler/src/"

javac -cp ".\
:$dir/selenium-2.30.0/selenium-java-2.30.0.jar\
:$dir/selenium-2.30.0/libs/*\
:$dir/selenium-2.30.0/selenium-server-standalone-2.30.0.jar\
:$dir/browsermob-proxy-2.0-beta-7/browsermob-proxy-2.0-beta-7-sources.jar\
:$dir/browsermob-proxy-2.0-beta-7/lib/*\
:$dir/zLoadProfiler/zLoadProfiler/src/" \
com/selenium/zLoadProfilerPkg/*.java
于 2013-03-12T00:41:46.757 に答える
0

IDEの外部でアプリケーションをコンパイルする場合は、ApacheAntを使用する必要があります。これは、Antを使用してアプリケーションをコンパイルするために使用できるbuild.xmlファイルの例です。

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="/home/sgalkov/zpp_tech_git_checkout/profiler/zLoadProfiler/zLoadProfiler"
    default="compile">

<property name="dir.prefix" value="/home/sgalkov/zpp_tech_git_checkout/profiler"/>

<path id="compile.classpath">
    <pathelement location="classes"/>
    <fileset dir="${dir.prefix}/selenium-2.30.0">
        <include name="selenium-java-2.30.0.jar"/>
        <include name="libs/*"/>
        <include name="selenium-server-standalone-2.30.0.jar"/>
    </fileset>
    <fileset dir="${dir.prefix}/browsermob-proxy-2.0-beta-7">
        <include name="browsermob-proxy-2.0-beta-7-sources.jar"/>
        <include name="lib/*"/>
    </fileset>
</path>
<property name="compile.classpath" refid="compile.classpath"/>


<target name="compile">
    <mkdir dir="classes"/>
    <javac failonerror="true" srcdir="src" debug="yes"
        includes="**/*.java" destdir="classes"
        classpath="${compile.classpath}">
    </javac>
</target>

<target name="clean">
    <delete dir="classes"/>
</target>

</project>

classesすべてのクラスは、ソースパッケージ階層をミラーリングする構造で呼び出されるフォルダーに入れられます。アプリケーションを実行するには、classesフォルダをクラスパスに配置し、メインクラスをとして呼び出すことができますcom.selenium.zLoadProfilerPkg.Main。antには、クラスをjarファイルにパッケージ化するなどの優れた機能がいくつかあります。チェックしてください。

に関してはMain$1.class、パッケージ定義が各Javaソースファイルの先頭で正しく定義されていることを確認してください。

また、compile.classpath提供したantビルドスクリプトをチェックして、質問で提供したクラスパスのスペルを間違えたり、表現したりしていないことを確認してください。

于 2013-03-12T12:48:41.623 に答える
0

サブディレクトリ(最上位パッケージ)があるソースルートディレクトリでjavacを起動する必要があります。comこれは、Windowsでもテストできます。

コンパイルされた.class'es/jars / wars/earsもデプロイできます。次に、コンパイルのターゲットが必要です(1.5、1.6、1.7)。

そして、はい、antまたは最近のMavenは、IDE内とスタンドアロンの両方で優れたビルドインフラストラクチャを提供する可能性があります。

于 2013-03-12T13:00:33.537 に答える