2

EclipseでJavaプロジェクトを作成し、WindowsPCのEclipseから直接正常に実行しました。ここで、Linuxサーバーで同じJavaプログラムを実行する必要があります。

PCからサーバーに.classファイルをコピーして実行しようとしましたが、機能しませんでした。その後、プロジェクト全体をコピーし、シェルからjavac MyProject.javaを実行すると、次のエラーが返されました。

RecordImportBatch.java:2: error: package org.apache.commons.io does not exist
import org.apache.commons.io.FileUtils;

...

RecordImportBatch.java:3: error: package org.neo4j.graphdb does not exist
import org.neo4j.graphdb.RelationshipType;

これは、コンパイルコマンドにjarファイルを含めなかったことが原因だと思います。

このプロジェクトには多くのjarファイルが含まれており、Javaの初心者として、これまでのところ、Eclipseで動作するプロジェクトをShellからコンパイルする方法を見つけていません。

Eclipseから直接適切なコンパイルコマンドを取得してシェルに貼り付ける方法があるかどうかを誰かが知っていますか、それともすべてのjarファイルを「手動で」含める必要がありますか?この場合、MyProject.javaと同じフォルダにあるlibディレクトリに配置されたすべてのjarを含める方法を知っている人はいますか?

ありがとうございました!

4

3 に答える 3

1

必要な場合は、PC上のEclipseでプログラムをコンパイルして実行し、コンパイルした結果をLinuxマシンに転送してから、[ファイル]->[エクスポート]->[Java]-> [Runnable Jar]ファイルを使用して、最も適切なパッケージを選択します。あなたのために。

技術的に最も簡単なのは、「必要なライブラリをjarの横のサブフォルダーにコピーする」を使用することですが、ファイルを一緒に圧縮して配布し、Linuxボックスで解凍する必要があります。

于 2012-06-05T09:17:01.667 に答える
1

Javaについて学習しているだけの場合、この提案は難しいかもしれませんが、mavenを使用してプロジェクトをビルドすることをお勧めします。これには、ソースファイルとディレクトリの再編成が必要です。次に、アセンブリプラグインを使用して、すべての依存関係を含むzipを作成します。次に、プログラムを実行するには、次のようにします。

unzip myapp.zip
cd myapp
java -cp "lib/*" com.blah.MyApp

(シェルによっては、/ *部分の構文を調整するか、一重引用符を使用するか、引用符を削除する必要がある場合があります)

これがアセンブリプラグインのスニペットです(汎用...バージョン以外はハードコーディングされておらず、規則に従うパス)。これはpom.xmlに含まれます:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <descriptors>
            <descriptor>src/main/assembly/distribution.xml</descriptor>
        </descriptors>
        <appendAssemblyId>false</appendAssemblyId>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <!-- this is used for inheritance merges -->
            <phase>package</phase>
            <!-- append to the packaging phase. -->
            <goals>
                <goal>single</goal>
                <!-- goals == mojos -->
            </goals>
        </execution>
    </executions>
</plugin>

そして、これがアセンブリファイルの例です(これはpom.xmlに関連してsrc / main / assembly / distribution.xmlにあります):

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"
>
    <id>${artifact.version}</id>
    <formats>
        <format>zip</format>
    </formats>

    <files>
        <file>
            <!-- an example script instead of using "java -cp ..." each time -->
            <source>${project.basedir}/src/main/bin/run.sh</source>
            <outputDirectory>.</outputDirectory>
            <destName>run.sh</destName>
            <fileMode>0754</fileMode>
        </file>
    </files>

    <fileSets>
        <fileSet>
            <directory>${project.basedir}/src/main/resources/</directory>
            <outputDirectory>/res/</outputDirectory>
            <includes>
                <!-- just examples... -->
                <include>*.sql</include>
                <include>*.properties</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>config/</directory>
            <outputDirectory>/config/</outputDirectory>
        </fileSet>
    </fileSets>

    <dependencySets>
        <dependencySet>
            <outputDirectory>/lib</outputDirectory>
            <excludes>
                <!-- add redundant/useless files here -->
            </excludes>
        </dependencySet>
    </dependencySets>
</assembly>

また、EclipseにはGUIに「jarpackager」ユーティリティがありますが、数年前に使用したときはあまり良くないことがわかりました。そして、それが依存関係を処理するとは思わないので、上記の「-cp」引数を取り、すべてのjarを追加するか、自分でlibディレクトリに配置する必要があります。

また、このhttp://fjep.sourceforge.net/もありますが、私はこれを使用したことがありません。彼のチュートリアルでは、彼の最後の行(実行中を示しています)は次のようになります。

> java -jar demorun_fat.jar
Hello
于 2012-06-05T08:24:00.097 に答える
-1

あらゆる種類のビルドツールを使用することを強くお勧めします。デファクトスタンダードはAntまたはMavenですが、いくつかの代替手段を見つけることができます。どちらも小さなプロジェクト用に設定するのは非常に簡単で、それらを使用するのも簡単です(Eclipseは基本的なAntbuild.xmlファイルも生成できることに注意してください)。

たとえば、プロジェクト全体を実行するための1つのコマンドである可能性があります。

> ant run
Buildfile: build.xml

clean:

compile:
    [mkdir] Created dir: ...
    [javac] Compiling N source file to ...

run:
     [java] Running application...

main:

BUILD SUCCESSFUL
于 2012-06-05T08:52:38.410 に答える