Lite tips om Java.



Inledning

Avser att anteckna sådana saker som man inte gör så ofta och har en tendens att glömma.

Jag använder NetBeans 8.0.2 och jdk 1.8.0, MySQL 5.1.35 och mysql-connector-java5.1.35


 

 

Starta ett .jar program:

java -jar program.jar


 

Köra .java-fil med .jar-fil


När man behöver ansluta till en mysqldatabas i sitt javaprogramoch.
Kommando för att köra en .java-fil tillsammans med en .jar-fil:

java -cp .:/home/jan/Development/Java/FirstJDBCProgram/mysql-connector-java-5.1.21-bin.jar programnamn
eller
java -cp .:mysql-connector-java-5.1.21-bin.jar programnamn
om javaprogrammet och jar-filen ligger i samma directory.

OBS! Det är en punkt och ett kolon i början.



 

Om Databaskoppling:

För att kunna ansluta till en MySQL-databas behövdes mysql-connector-java5.1.35.jar
I Mageia installera paketet mysql-connector-java som innehåller com.mysql.jdbc.Driver
Börja med att ladda ner dev.mysql.com/downloads/connector/j/mysql-connector-java-5.1.22.tqr.gz
Öppna filen med Ark. Packa upp filen. Flytta/Kopiera filen till /usr/lib64/java
Sedan måste CLASSPATH sättas.
export CLASSPATH=/usr/lib64/java/mysql-connector-java-5.1.21-bin.jar:$CLASSPATH
Min erfarenhet säger mig att även sökvägen till det egna programmet ska finnas med i sökvägen. Exempel:
/usr/lib/java/mysql-connector-java-5.1.21-bin.jar:/home/jan/Development/Java/FirstJDBCProgram
Raden kan även skrivas in i .bash_profile

Följande görs i NetBeans:

								


Klicka på projektnamnet så att det expanderas.
Högerklicka på Libraries.
Välj Add JAR/Folders
Du får nu ett nytt fönster.
Sök reda på var mysql-connector-version-bin.jar
Välj den och klicka på Open


 

I Mandriva Linux levereras MySQL med variabeln skip_networking=ON.
Eftersom Java kopplar upp sig mot MySQL via TCP/IP så måste variabeln sättas till OFF.
Detta gör genom att editera filen /etc/my.cnf
Här markeras följande rad bort:

#skip-networking

Därefter ska MySQL startas om.




 

Java och databasdrivare, MySQL, driver not found!

Fel: Av någon anledning hittar inte Java "Drivern" när den ska ansluta till databasen.

Åtgärd:

Sitter du fortfarande med NetBeans så inkluderar du enkelt java-driver genom att:

- Högerklicka på Libraries under ditt projekt (Projektträdet på vänster sida, syns inte det, klicka på Window - > Projects i menyn

- Välj Add Library

- Leta upp MySQL JDBC Driver

- Klicka på Add Library, nu ska det fungera.




 

Connection:
För att koppla sig till databasen gäller det att man har rätt behörighet.
Behörigheten sätts i databasen mysql i tabellen user.
Först ska root ha rättighet till alla databaser (Fältet Host lämnas blankt och alla övriga fält skall ha Y).
Detta kan göras från konsolen i läge mysql monitor:

[jan@mindator]$mysql>grant * on *.* to 'root'@'%' identified by 'somepassword';								
								

Därefter kan man lägga upp de "hostar" som root ska ha behörighet till med samtliga fält = Y.





 

Java version och Raspberry Pi.


Har jobbat några dagar med java och där råkat ut för versionsproblem i en av mina RPi.


När jag kör följande kommando:
java GreetingServer 6066
Får jag följande felmeddelande:
Exception in thread "main" java.lang.UnsupportedClassVersionError: GreetingServer : Unsupported major.minor version 51.0


I Magaeia har jag samma versionnummer för både java och javac.


$ javac -version
javac 1.7.0_55
$ java -version
java version "1.7.0_55"
OpenJDK Runtime Environment (mageia-2.4.7.1.mga4-x86_64 u55-b13)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
$


Resultatet när jag kollat i RPi blir:


pi@Cisero ~ $ javac -version
javac 1.7.0_25
pi@Cisero ~ $ java -version
java version "1.6.0_31"
OpenJDK Runtime Environment (IcedTea6 1.13.3) (6b31-1.13.3-1~deb7u1+rpi1)
OpenJDK Zero VM (build 23.25-b01, mixed mode)
pi@Cisero ~ $


Detta trots att jag installerat Oracle-java8* - sudo apt-get install oracle-java8* i en annan RPi


Så här blir resultatet när jag kollat i en annan RPi:


pi@Caesar ~ $ javac -version
javac 1.6.0_31
pi@Caesar ~ $ java -version
java version "1.6.0_31"
OpenJDK Runtime Environment (IcedTea6 1.13.3) (6b31-1.13.3-1~deb7u1+rpi1)
OpenJDK Zero VM (build 23.25-b01, mixed mode)
pi@Caesar ~ $


Det här gör mig lite frustrerad och konfunderad. Hur ska jag få till samma versionsnummer i RPi nr 1?


Här fanns lösningen:


sudo apt-get remove --purge openjdk-7-jdk

pi@Cisero ~ $ javac -version
javac 1.8.0
pi@Cisero ~ $ java -version
java version "1.6.0_31"
OpenJDK Runtime Environment (IcedTea6 1.13.3) (6b31-1.13.3-1~deb7u1+rpi1)

OpenJDK Zero VM (build 23.25-b01, mixed mode)
pi@Cisero ~ $

sudo apt-get remove --purge oracle-java8-jdk

pi@Cisero ~ $ java -version
java version "1.6.0_31"
OpenJDK Runtime Environment (IcedTea6 1.13.3) (6b31-1.13.3-1~deb7u1+rpi1)
OpenJDK Zero VM (build 23.25-b01, mixed mode)
pi@Cisero ~ $ javac -version
javac 1.7.0_40
pi@Cisero ~ $

sudo apt-get remove --purge oracle-java7-jdk

pi@Cisero ~ $ java -version
java version "1.6.0_31"
OpenJDK Runtime Environment (IcedTea6 1.13.3) (6b31-1.13.3-1~deb7u1+rpi1)
OpenJDK Zero VM (build 23.25-b01, mixed mode)
pi@Cisero ~ $ javac -version
-bash: /usr/bin/javac: Filen eller katalogen finns inte
pi@Cisero ~ $

sudo apt-get install openjdk-6-jdk

pi@Cisero ~ $ java -version
java version "1.6.0_31"
OpenJDK Runtime Environment (IcedTea6 1.13.3) (6b31-1.13.3-1~deb7u1+rpi1)
OpenJDK Zero VM (build 23.25-b01, mixed mode)
pi@Cisero ~ $ javac -version
javac 1.6.0_31
pi@Cisero ~ $