Schlagwort-Archive: terminal

Compile, Run And Develop Java in the Console, Setup for TDD with JUnit

When you want to learn Java it is good to know about the basics.

Requirements

  1. Text editor
  2. Java installed

check if java is installed.

java -version

Should be displayed something like that:

java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07-348-9M3406a)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-348, mixed mode)

Creating Development Structure

expected we want to create a project folder and in it an src,bin,lib,test folder.
src = here you create source files (packages)
bin = Output folder
lib = for Libraries e.g. JUnit.jar
test = mirroed the package structure from src, here you develop your tests.

mkdir project
cd project
mkdir src
mkdir bin
mkdir lib
mkdir test

Write a first very simple program

cd src
vim Main.java

type the following:

public class Main{
 public static void main(String[] args){
  System.out.println("Hello User");
 }
}

Back to console compile! Just to see it runs. (You are still in folder src)

javac Main.java
ls

You should see now 2 Files Main.java and Main.class
To run the program just type

java Main

You should see

Hello User

Now delete the Main.class file.

Use Packages

It is recommend to use packages.
create a package (mkdir mypackage)
Java conventions says package names is always lowercase and have no special characters.
move Main.java into the package

mv Main.java mypackage/

Now compile (you are still in src)

javac mypackage/Main.java

You can run the program with 2 Ways

cd mypackage
java Main

Or back in folder src we have to set the classpath (-cp)

java -cp mypackage Main

Set output folder

delete mypackage/Main.class

javac -d ../bin mypackage/Main.java

Now the Main.class file should be in bin folder.
Run the program

cd ../bin
java Main

Or go to project folder and call the Main with classpath

cd ..
java -cp bin Main

Set CLASSPATH

Programmers are lazy so set the classpath.
To view the classpath type

echo $CLASSPATH

If the output is Nothing then the variable isn’t set.
ensure that you are in project folder

export CLASSPATH=./bin

Now you can start the program from here with

java Main

Install JUnit

Download newest version from https://github.com/KentBeck/junit/downloads
Copy the download junit.jar file to your lib folder.
Add the jar to CLASSPATH

export CLASSPATH=$CLASSPATH:./lib/junit-4.9b2.jar

Test wether you reach the JUnitCore class

java org.junit.runner.JUnitCore

You should see something like this.

JUnit version 4.9b2
Time: 0,001
OK (0 tests)

For more information take a look at http://junit.sourceforge.net/doc/faq/faq.htm#started_2

Write a Simple Test

Go to test folder and create a Class SimpleTest with the following content

import org.junit.*;
import static org.junit.Assert.*;
import java.util.*;
 
public class SimpleTest{
    @Test
    public void testEmptyCollection(){
        Collection collection = new ArrayList();
        assertTrue(collection.isEmpty());
    }   
}

Go back to project folder, compile and run the test.

cd ..
javac -d bin test/SimpleTest.java
java org.junit.runner.JUnitCore SimpleTest

Should be output

JUnit version 4.9b2
.
Time: 0,006
 
OK (1 test)

Annotation

The example SimpleTest.java is taken from http://junit.sourceforge.net/doc/faq/faq.htm#started_2

SVN in der Konsole (Shell)

Repositories müssen nicht auf einen Server liegen. Sie können auch local auf dem Entwicklungsrechner liegen.
Achtung hier muß das Repository dann über file:/// angesprochen werden.

List

Um mit dem Komandozeilen – Client ein Repository untersuchen steht der Befehl svn list zur Verfügung.

svn list file:///Users/ingoreschke/Repositories/Entwicklung/Webprojekte

Für eine detailiertere Ansicht gibt es den Parameter -v (–verbose)
Um eine Ebene tiefer zu gelangen muß man den Pfad den entsprechenden Ordner erweitern.

svn -v list file:///Users/ingoreschke/Repositories/Entwicklung/Webprojekte/hebamme-nike

Import

Mit dem svn import-Befehl kann ein unversionierter Verzeichnisbaum schnell in ein Projektarchiv kopiert werden, wobei benötigte Zwischenverzeichnisse nach Bedarf angelegt werden. svn import erfordert keine Arbeitskopie und pflegt Ihre Dateien sofort in das Projektarchiv ein. Typischerweise verwenden Sie diesen Befehl, wenn bereits ein Verzeichnisbaum besteht, den Sie aber in einem Subversion-Projektarchiv pflegen möchten.

~ ingoreschke$ svn  list file:///Users/ingoreschke/Repositories/Entwicklung/Webprojekte/pingold
branch/
tag/
trunk/

Da die empfohlene Projektarchiv-struktur aus /trunk, /branch, /tag besteht, ich aber in meiner lokalen Entwicklungsumgeben eben nicht diese Struktur haben will, sondern nur die Struktur unter trunk bediene ich mich dem folgenden workaround.

1. erstelle ein lokal neues Verzeichnis mit dem Projektnamen bspw. ingo-reschke
2. darin erstelle ich 3 weitere neue Verzeichnisse trunk, branch, tag
3. diese “Projekt” wird in das root vom Projektarchiv Webprojekte importiert.
4. lösche das locale (temporäre) Verzeichnis ingo-reschke
5. improtiere meine bisherigen Daten die unter Projekte/ingo-reschke/ liegen nach Webprojekte/ingo-reschke/trunk/
6. checkout des Projektes.
7. Jetzt hab ich mein Projekt dem Repository hinzugefügt und verbunden.

mkdir ingo-reschke
cd ingo-reschke/
mkdir branch
mkdir trunk
mkdir tag
cd ..
svn import ingo-reschke file:///Users/ingoreschke/Repositories/Entwicklung/Webprojekte/ingo-reschke
cd Documents/xPrivat/Projects/ingo-reschke
svn import file:///Users/ingoreschke/Repositories/Entwicklung/Webprojekte/ingo-reschke/trunk -m "initial import"
svn ls file:///Users/ingoreschke/Repositories/Entwicklung/Webprojekte/ingo-reschke/trunk
svn cp file:///Users/ingoreschke/Repositories/Entwicklung/Webprojekte/ingo-reschke/trunk/ .

Auflistung einfacher (üblicher) Anwendungsfälle

Es wird vorausgesetzt das wir uns im working copy befinden

alle Änderungen einchecken

svn commit .

fäschlicher Weise eine Datei geändert aber noch nicht eingecheckt? Kein Problem

svn revert dateiname

Quellen:http://svnbook.red-bean.com/nightly/de/svn-book.html

Expected FS format ‘2’; found format ‘3’

Wenn man diese Meldung beim Zugriff auf ein Repository erhält, so bedeutet dies, dass die Version mit der das Repository erstellt wurde sich von der Version des zugreifenden Clients unterscheidet.

Abhilfe hat bei mir das Upgrade des Cients und seine Tools auf die neueste Version gebracht.

Ermitteln der aktuellen Version:

svn --version

Wo finde ich die neueste Version? (binary Packages)
http://subversion.apache.org/features.html

Für mac OSX 10.5
http://www.open.collab.net/downloads/community/

  1. dmg ausführen
  2. im Terminal Umgebungsvariablen anpassen
    export PATH=/opt/subversion/bin:$PATH
  3. fertig.
svn --version

macbook:~ ingoreschke$ svn –version
svn, version 1.6.11 (r934486)
compiled Apr 20 2010, 17:01:38

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
– handles ‘http’ scheme
– handles ‘https’ scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
– with Cyrus SASL authentication
– handles ‘svn’ scheme
* ra_local : Module for accessing a repository on local disk.
– handles ‘file’ scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
– handles ‘http’ scheme
– handles ‘https’ scheme

macbook:~ ingoreschke$

Quellen und Resourcen:
http://svnbook.red-bean.com/
http://www.open.collab.net/downloads/community/
http://subversion.apache.org/features.html
http://www.opensource.apple.com/source/subversion/subversion-33/subversion/notes/repos_upgrade_HOWTO

http://bytes.com/topic/unix/answers/868523-svn-expected-fs-format-2-found-format-3-a