SQLPlus への接続に使用する Solaris スクリプトがあります。このスクリプトの最後に、SQL>
プロンプトが表示されます。スクリプトは次のようになります。
`#!/bin/ksh
echo Setting ORACLE_HOME ..
export ORACLE_HOME=<path>
echo Setting ORACLE_SID ..
export ORACLE_SID=<SID>
echo Setting PATH ..
export PATH=$PATH:$ORACLE_HOME/bin
echo
echo Connecting to SQLPlus ..
$ORACLE_HOME/bin/sqlplus pdmlink80/pd1016I65@P38`
今、ボタンが付いた Java Swing UI を作成しようとしています。クリックすると、このスクリプトがバックグラウンドで実行され、同じSQL>
プロンプトが表示されます。スイングコードは次のようになります。
public class ButtonExample extends JFrame {
public ButtonExample() {
initUI();
}
private void initUI() {
JPanel panel = new JPanel();
getContentPane().add(panel);
panel.setLayout(null);
JButton myButton = new JButton("Button");
myButton.setBounds(50, 60, 80, 30);
myButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
String s;
Process p;
try {
p = Runtime.getRuntime().exec("/usr1/ptc/Windchill_9.1/Windchill/bin/windchill shell");
p.waitFor();
BufferedReader br = new BufferedReader(
new InputStreamReader(p.getInputStream()));
while ((s = br.readLine()) != null){
System.out.println(s);
break;
}
System.out.println ("exit: " + p.exitValue());
JOptionPane.showMessageDialog(null,"Script successfully executed!!");
}
catch (Exception e) {}
}
});
panel.add(myButton);
setTitle("ButtonExample");
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
ButtonExample ex = new ButtonExample();
ex.setVisible(true);
}
});
}
しかし、このコードを実行すると、明らかに SQL プロンプトが表示されません。プロンプトを表示するにはどうすればよいですか?