| MINERVA + Java Libraries as standalone application
This example shows
- how to extend MINERVA with Java Property handling
- how to produce library packages for MINERVA
- how to compile and statically link the extension
- how to execute this as standalone
- how to handle security exceptions
- how to use 'catch/3'
The declaration of the extension is
property.mxt
Note that this example is for an application, not for applets
The top level MINERVA source program is
example2.min
Refer to 'Compile', 'Go' and the other files of this directory for details.
Questions? Problems? Feedback? Please let us know!
mailto:support@ifcomputer.com
% MINERVA (c) IF Computer 1996,97
% http://www.ifcomputer.com/MINERVA mailto:support@ifcomputer.com
% PropertyExtension--------------------------------------------
java_predicates('java.util.Properties', [
create_properties = 'Properties',
properties_getProperty = getProperty(string,string),
properties_getProperty = getProperty(string),
properties_propertyNames = propertyNames,
system_getProperty = getProperty(string,string)
]).
java_predicates('java.lang.System', [
system_getProperty = getProperty(string),
system_getProperties = getProperties
]).
% MINERVA (c) IF Computer 1996,97
% http://www.ifcomputer.com/MINERVA mailto:support@ifcomputer.com
% file: example1.min
:- package(property).
main(Args) :-
property(Args).
property(Args) :-
write(Args),nl,flush_output,
p(system_getProperties(_)),
p(system_getProperty('my.parameter',unknownParam,_)),
p(system_getProperty('java.version',_)),
p(system_getProperty('java.vendor',_)),
p(system_getProperty('java.vendor.url',_)),
p(system_getProperty('java.home',_)),
p(system_getProperty('java.class.version',_)),
p(system_getProperty('java.class.path',_)),
p(system_getProperty('os.name',_)),
p(system_getProperty('os.arch',_)),
p(system_getProperty('os.version',_)),
p(system_getProperty('file.separator',_)),
p(system_getProperty('path.separator',_)),
p(system_getProperty('line.separator',_)),
p(system_getProperty('user.name',_)),
p(system_getProperty('user.home',_)),
p(system_getProperty('user.dir',_)),
!.
p(Goal) :-
catch(Goal,AnyError,sorry(Goal,AnyError)),
writeq(Goal), nl, flush_output,
!.
sorry(Goal,AnyError) :-
println(['Oooops: ', quoted(Goal)]),
println(['caused: ', quoted(AnyError)]),
flush_output.
#!/bin/sh
# file Compile.sh, Compile
CLASSPATH=.:$MINERVA_HOME:$CLASSPATH
export CLASSPATH
# without GUI
# produce the extended Minerva top level and single added class
minervax -f MinervaProperty property
mjavac MinervaProperty.java
mjavac property.java
minervac example2
@echo off
set prevclp=%CLASSPATH%
set CLASSPATH=%MINERVA_HOME%;%CLASSPATH%
rem produce the extended Minerva top level and single added class
call minervax -f MinervaProperty property
call mjavac MinervaProperty.java
call mjavac property.java
call minervac example2
set CLASSPATH=%prevclp%
#!/bin/sh
export CLASSPATH=.:$MINERVA_HOME:$CLASSPATH
mjava \
MinervaProperty \
-c $MINERVA_HOME/minerva.mca \
-l example2
@echo off
set prevclp=%CLASSPATH%
set CLASSPATH=%MINERVA_HOME%;%CLASSPATH%
call mjava MinervaProperty -c %MINERVA_HOME%\minerva.mca -l example2
set CLASSPATH=%prevclp%
|