| MINERVA + Gui + Javaライブラリ + 自身のライブラリ (スタンドアローンおよびアプレットの場合)
この例では以下のことがわかります。
- GUIを含むMINERVAを、Javaの内部クラスとあなた自身のプログラムで拡張する方法
- MINERVAのライブラリパッケージを生成する方法
- コンパイル方法、拡張を静的にリンクする方法
- スタンドアローン・アプレットとして実行する方法
- セキュリティ例外の処理方法
- 'catch/3'の使用方法
Javaライブラリのこの拡張の宣言は、
property.mxtです。
自己ライブラリの拡張の宣言は
mystuff.mxtです。
アプレットラッパーは、
wrap.htmlです。
トップレベルのMINERVAソースプログラムは
example4.min
詳細は、このディレクトリの'Compile', 'Go'他のファイルを参照して 下さい。
質問・問題・コメントなどは
mailto:support@ifcomputer.com
までお知らせ下さい。
% MINERVA (c) IF Computer 1996,97
% http://www.ifcomputer.com/MINERVA mailto:support@ifcomputer.com
% file: example1.min
:- package(gui).
:- package(mystuff).
:- package(property).
main(Applet, Args) :-
textArea_create(16, 60, OutputWindow),
textComponent_setEditable(OutputWindow,false),
container_add(Applet, 'Center', OutputWindow),
textArea_getOutputStream(OutputWindow, Output),
set_output(Output),
set_error(Output),
run_add3,
property(Args).
run_add3 :-
write('add3(10,11,12) returned: '),
add3(10,11,12,X),
writeq(X), nl, flush_output.
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
CLASSPATH=.:$MINERVA_HOME:$CLASSPATH
export CLASSPATH
mjavac AddTest.java
minervax -gui -f MinervaGuiExtended -c PackageProperty property
minervax -f Dummy -c PackageMystuff mystuff
mjavac PackageProperty.java
mjavac PackageMystuff.java
rm tmp.java
mv MinervaGuiExtended.java tmp.java
minervac extend
minerva -l extend tmp.java MinervaGuiExtended.java
rm tmp.java
mjavac MinervaGuiExtended.java
cp -p MinervaGuiExtended.class $MINERVA_HOME/userclasses
cp -p PackageProperty.class $MINERVA_HOME/userclasses
cp -p PackageMystuff.class $MINERVA_HOME/userclasses
cp -p add3.class $MINERVA_HOME/userclasses
minervac example4
% MINERVA (c) IF Computer 1996,97
% http://www.ifcomputer.com/MINERVA mailto:support@ifcomputer.com
% add3(+Integer,+Integer,+Integer,-Integer) <-
java_predicates('AddTest', [
add3 = add3(int,int,int)
]).
// add3 adds three integers and returns the result
public class AddTest {
public static int add3(int a, int b, int c)
{ return a + b + c; }
}
% 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
]).
|