# Auto SSH Upload to Raspberry



## cocojack42 (25. Dez 2013)

Hallöchen,
ich suche nach einem Weg, wie ich auf einen Raspberry PI ein Java Programm automatisch hochladen kann wenn ich "Run" klicke. Bei der Eclipse c++ Variante ist dies ja möglich. Kennt jemand einen Weg wie ich das auch mit der Java Eclipse Version hinbekomme?


----------



## MF (12. Feb 2014)

Hallo,

habe erst seit einer Woche die Himbeere - "daher die späte Antwort" 
Ich habe das so gelöst. 
- Samba Server auf dem Raspi einrichten
- JAVA Verzeichnis des Raspials Netzlaufwerk in Windows einrichten und im Windows File Explorer verbinden (falls Passwort erfoderlich)
- in Netbeans schreibe ich das .Jar File direkt auf den Rasperry (Das kann man direkt im Projekt Wizzard bereits festlegen) 
- In der Raspi Shell kannst Du dann sofort das Programm starten.

Du kannst das auch in Netbeans direkt in build.xml eintragen.
In diesem Oracle Blog wird das vorgeschlagen:
https://blogs.oracle.com/speakjava/entry/integrating_netbeans_for_raspberry_pi

In Ecllipse kann man das sicherlich auch einrichten. Die Lösung über Samba finde ich etwas besser. Gerne würde ich zwei JARs (also in zwei Verzeichnissen: einmal auf meinem Rechner mit der IDE und einmal auf der Himbeere) erzeugen lassen- das geht bestimmt -  ich weiß leider noch nicht wie ...

Tja ... das habe ich bei mir gelöst und es funktioneirt - nicht gelöst habe ich das:
http://www.java-forum.org/mobile-geraete/158200-javafx-raspberry-pi.html
Falls Du zufällig eine Lösung dazu hast ?!

Viele Grüße


----------



## anti-held (12. Feb 2014)

Auch ich habe es ähnlich zu MFs Lösung angewendet.
Ein Netzlaufwerk zum Ordner auf dem Raspi.
Für das Deployment habe ich mir ein Ant-Script geschrieben.
Dieses kompiliert den Code, erstellt die passende Ordnerstruktur lokal mit dem Jar-File incl. Ressourcen und kopiert alles an die gewollte Stelle auf dem Raspi.

So habe ich eine lokale Version, die ich per Batch-Skript ausführen kann und eine remote Version auf dem Raspi.


----------



## cocojack42 (6. Mrz 2014)

Ich versuche das grade, indem ich einen eigenen Ant-Builder konfiguriere. Leider stelle ich mich etwas blöd an . Könnte einer von euch vielleicht seinen Builder exportieren?


----------



## cocojack42 (7. Mrz 2014)

Nach mehreren Stunden Arbeit und etwas glück habe ich endlich auch eine Lösung erarbeitet:


Ich habe den Builder unter Project->Properties einen neuen ANT-Builder verpasst







dann es wie konfiguriert






und in die XML habe ich das hier reingeschrieben:

[XML]<?xml version="1.0"?>
<project name="SocketClient" default="main" basedir=".">
	<property name="src.dir" location="src" />
	<property name="build.dir" location="bin" />
	<property name="dist.dir" location="rasp_destionation" />
	<property name="bat" location="${basedir}" />
	<property name="main.class" location="test.Main" />

	<target name="clean">
		<delete dir="${dist.dir}" />
	</target>

	<target name="makedir">
		<mkdir dir="${build.dir}" />
		<mkdir dir="${dist.dir}" />
		<mkdir dir="${src.dir}" />
	</target>

	<target name="compile" depends="clean, makedir">
		<javac srcdir="${src.dir}" destdir="${build.dir}">
		</javac>
	</target>



	<target name="jar" depends="compile">
		<description>compiles project to jar</description>
		<jar destfile="${dist.dir}\${ant.project.name}.jar" basedir="${build.dir}">
			<manifest>
				<attribute name="Main-Class" value="${main.class}" />
			</manifest>
		</jar>
	</target>

	<target name="main" depends="debug">
		<description>Main Target, launches when "Run" is clicked</description>
	</target>

	<target name="debug" depends="compile, jar">
		<description>Debug configuration, uploads to tmp directory</description>
			<exec dir="${bat}" executable="cmd" os="Windows 7">
				<arg line="/c debug.bat"/>
			</exec>
			<description>Main target</description>
	</target>


</project>[/XML]

vielleicht hilft das ja mal jemand in Zukunft


----------



## cocojack42 (8. Mrz 2014)

Hier noch ne kleinere Verbesserung, damit man sich samba sparen kann und die Datei über putty hochlädt:

[XML]
<target name="send-jar" depends="compile, jar">
		<exec executable="pscp.exe" dir="${basedir}">
			<arg line="-pw ${pass} ${dist.dir}\${ant.project.name}.jar ${user}@${host}:home/pi/debug/${ant.project.name}.jar" />
		</exec>
</target>[/XML]

ach und noch etwas was ich vergessen habe, sollte eingefügt werden, da sonst die breakpoints ignoriert werden :

[XML]
<target name="compile" depends="clean, makedir">
	<javac srcdir="${src.dir}" destdir="${build.dir}" debuglevel="lines,vars,source">
	</javac>
</taret>[/XML]


----------

