giovedì 12 febbraio 2015

Settare JDK su Ireport

Ireport attualmente non funziona se abbiamo installato la JDK 1.8.
La versione che ho provato io è la 4.7.0, non proprio l'ultimissima (siamo attualmente alla 5.5.0), comunque anche su quest'ultima leggo sui forum che ci sono problemi.
Io avevo installato la JDK 1.8 ma comunque ho nel path come prima entry quella della JDK 1.6 per cui ero convinto di girare comunque con la JDK 1.6 (anche la JAVA_HOME punta alla JDK 1.6).
Attenzione quindi, iReport prende la JDK da suoi ragionamenti interni ignorando le opzioni specificate a livello di sistema....

Avevo il seguente messaggio di errore (il file di log di Ireport si trova in Windows  sotto c:\Utenti\nomeutente\.ireport\4.7.0\var\log\messages.log )

java.lang.IllegalStateException: java.lang.IllegalAccessException: Class org.openide.util.WeakListenerImpl$ProxyListener can not access a member of class org.openide.filesystems.$Proxy0 with modifiers "public"

Per risolvere occorre modificare il seguente file ireport.conf che si trova sotto C:\Program Files\Jaspersoft\iReport-4.7.0\etc.

In particolare ho modificato la parte in grassetto

# ${HOME} will be replaced by user home directory according to platform
default_userdir="${HOME}/.${APPNAME}/4.7.0"
default_mac_userdir="${HOME}/Library/Application Support/${APPNAME}/4.7.0"

# options used by the launcher by default, can be overridden by explicit
# command line switches
default_options="--branding ireport -J-Xms256m -J-Xmx512m -J-Dorg.netbeans.ProxyClassLoader.level=1000 -J-XX:MaxPermSize=512m "
# for development purposes you may wish to append: -J-Dnetbeans.logger.console=true -J-ea

# default location of JDK/JRE, can be overridden by using --jdkhome <dir> switch
#
jdkhome="C:/Program Files/Java/jdk1.6.0_45"

# clusters' paths separated by path.separator (semicolon on Windows, colon on Unices)
#extra_clusters=



 

domenica 8 febbraio 2015

Javascript timer

Un contatore di secondi in Javascript:


<!DOCTYPE html>
<html>
<body>

<p>Script che starta un contatore:</p>

<p id="demo"></p>

<script>
var myVar=setInterval(function(){myTimer()},1000);
var cont=-1;
function myTimer() {
    var d = new Date();
    document.getElementById("demo").innerHTML =cont+myVar+" secondi trascorsi";
    cont=cont+1;
}
</script>

</body>
</html>


Risultato: