2012-06-05 2 views
2

Я создал проект Java в Eclipse и успешно выполнил его непосредственно из Eclipse на моем ПК с ОС Windows. Теперь я должен запустить ту же самую программу java на сервере Linux.Как перенести проект Java Eclipse на другой компьютер и скомпилировать его из Shell?

Я попытался скопировать файлы .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, и в качестве новичка Java я пока не нашел способ скомпилировать проект, который работает в Eclipse от Shell.

Кто-нибудь знает, есть ли способ получить соответствующую команду компиляции непосредственно из Eclipse и просто вставить ее в оболочку или мне нужно включить все банки «вручную»? Если это так, кто-нибудь знает, как включить все банки, помещенные в каталог lib, который находится в той же папке, что и MyProject.java?

Спасибо!

ответ

1

Если вы просто узнаете о java, это предложение может быть проблемой, но было бы полезно использовать maven для создания вашего проекта, который требует реорганизации исходных файлов и каталогов. А затем используйте плагин assembly, чтобы создать 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> 

А вот пример файла сборки (это идет в SRC/главная/монтаж/distribution.xml относительно pom.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 есть утилита «jar packager» в gui, но я обнаружил, что это не очень хорошо, когда я использовал ее несколько лет назад. И я не думаю, что он обрабатывает зависимости, поэтому вам нужно взять аргумент «-cp» выше и добавить все банки или поместить их в свой каталог lib самостоятельно.

Также есть этот http://fjep.sourceforge.net/, но я его никогда не использовал ... Я только что нашел его сейчас, быстро глядя на упаковщик банку затмения. В своем учебнике, его последняя строка (показывая запустить его) выглядит следующим образом:

> java -jar demorun_fat.jar 
Hello 
+0

Каким будет соответствующий фрагмент Pom.xml? –

+0

Я добавил фрагмент и assembly.xml – Peter

-1

Я бы настоятельно рекомендовал использовать любые виды строительных инструментов, де-факто стандарты являются Ant или Maven, но вы можете найти several alternatives. Оба они довольно тривиальны для создания меньшего проекта, и использование их также является частью торта (обратите внимание, что Eclipse также может генерировать вам базовый файл Ant build.xml).

Например, это может быть одна команда, чтобы запустить весь проект:

> ant run 
Buildfile: build.xml 

clean: 

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

run: 
    [java] Running application... 

main: 

BUILD SUCCESSFUL 
1

Если то, что вам нужно сделать, это собрать и запустить программу в Eclipse, на вашем компьютере и передать скомпилированный результат Linux, затем используйте файл Файл -> Экспорт -> Java -> Runnable Jar и выберите наиболее подходящую для вас упаковку.

Технологически самым простым является использование «Копирование необходимых библиотек в подпапку рядом с банкой», но затем вам необходимо распространять файлы, сжимая файлы вместе и разархивировать их в ящике Linux.

+0

Спасибо! Ваше предложение сэкономило много времени. –

Смежные вопросы