Activator with Java Development - kimduho/webdev GitHub Wiki

Activator with Java Development

About Activator

  • Integrates Akka, Play, Java, etc. using Activator by Typesafe.com
  • Server side: play --> run by activator
  • Client UI side: bootstrap (+ vs. coffee script, etc.)

Prerequisites

  • Basic Java Development Tools - JDK 1.6+, Ant, Maven: ref

Installation

# cd /data1/workspaces/install/; wget https://downloads.typesafe.com/typesafe-activator/1.3.7/typesafe-activator-1.3.7-minimal.zip;
# cd /usr/local/; unzip /data1/workspaces/install/typesafe-activator-1.3.7-minimal.zip;
# ln -s activator-1.3.7-minimal activator;
# echo "export PATH=/usr/local/activator:$PATH" >> /etc/bashrc
# source /etc/bashrc
# which activator
/usr/local/activator/activator
# activator --version
sbt launcher version 0.13.8
  • Packages: path tree
  • /work/package/activator/ <-- activator binary, environment (you must add to PATH)
  • /work/package/bootstrap/ <-- bootstrap.js, bootstrap.css

Development

  • Generate new project
  • $ cd /work; activator new; <app_name>; select play + java;
  • or $ activator ui;
  • Develop: path tree
  • /work/<app_name>/api/app/views <-- index html
  • /work/<app_name>/api/app/controllers <-- java main
  • /work/<app_name>/api/app/models <-- data, database
  • /work/<app_name>/public/conf/ <-- application.conf (global variables), routes (web service API)
  • /work/<app_name>/public/javascripts/ <-- js ($ cp /bootstrap.js .)
  • /work/<app_name>/public/styles/ <-- css ($ cp /bootstrap.css .)
  • /work/<app_name>/public/images/ <-- favicon.png, etc.
  • Run project
  • $ cd /work/<app_name>; activator run;
  • open service port: $ vi /etc/sysconfig/iptables; add port 9000; service iptables restart;
  • http://localhost:9000 <-- project is compiled in real-time (if 1st time or anything is changed)
  • Change port to 8000
# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
# service iptables restart
# ./activator run -Dhttp.port=8000

Troubleshooting

  • [error] java.lang.UnsupportedClassVersionError: play/runsupport/classloader/ApplicationClassLoaderProvider : Unsupported major.minor version 52.0
  • This error is caused by the version mismatch between java and typesafe activator
  • Latest play framework (e.g. play 2.4.0+, or activator 1.3.0+) requires java 1.8+
  • So if you want to use java 1.6 or 1.7, downgrade activator to 1.2.x
$ java -version; # check java version first: if java version is 1.8+, downgrade java to 1.7
java version "1.7.x_xx"
$ ls /usr/local/activator*; # check activator version next
$ activator --version
sbt launcher version 0.13.8
$ cd /usr/local/; sudo unzip /home/<ID>/install/typesafe-activator-1.2.10.zip; # downgrade activator version
$ sudo ln -s activator-1.2.10 activator
$ sudo vi /etc/bashrc
...
export PATH=/usr/local/activator:$PATH
...
$ source /etc/bashrc
$ activator --version
sbt launcher version 0.13.5
$ cd /home/<ID>/; mkdir -p test; cd test; activator new; # play-java; myapp;
$ cd myapp; ./activator clean compile
  • [error] java.lang.UnsupportedClassVersionError: com/typesafe/config/ConfigException : Unsupported major.minor version 52.0
  • Java 8 (=52), Java 7 (=51)
$ activator new; # play-java; myapp;
$ cd myapp; ./activator clean compile last
...
java.lang.UnsupportedClassVersionError: com/typesafe/config/ConfigException : Unsupported major.minor version 52.0; // means Java 8 compiler is not supported
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
...
$ readlink -f /usr/bin/java
/usr/java/jdk1.7.0_79/bin/java
$ update-alternatives --config java
*  1           /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79-2.5.5.2.el7_1.x86_64/jre/bin/java
   2           /usr/java/jdk1.8.0_45/bin/java
 + 3           /usr/java/jdk1.7.0_79/bin/java
$ cd /usr/java; ls -aslF
default -> /usr/java/latest/
jdk1.7.0_79/
jdk1.8.0_45/
latest -> /usr/java/jdk1.8.0_45/
$ rm latest; ln -s /usr/java/jdk1.7.0_79 latest

Reference Links

⚠️ **GitHub.com Fallback** ⚠️