编辑:蚂蚁安全输入处理程序仍不能在Eclipse 4.x的工作,这里是一个基于ant脚本任务的解决方案,与内建工作的JavaScript引擎(因为JDK 1.6.0_06),因此不需要额外的库需要:
<project>
<script language="javascript">
// imports
importClass(javax.swing.JPasswordField);
importClass(javax.swing.JOptionPane);
var pw = new JPasswordField();
var choice = JOptionPane.showConfirmDialog(null, pw, "Enter Password..", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if (choice == JOptionPane.OK_OPTION) {
// create ant property
project.setNewProperty("pwd", pw.getText());
} else {
throw "Password required !!";
}
</script>
<echo>$${pwd} => ${pwd}</echo>
</project>
的方法JPasswordField.getText()已过时, 通常你会使用getPassword来(),但它不工作。
// create ant property
var s = new String(pw.getPassword());
project.setNewProperty("pwd", s);
只对chararray,而:
// create ant property
var s = String.valueOf(pw.getPassword());
project.setNewProperty("pwd", s);
结果:
[echo] ${pwd} => function String() { [native code for String.String, arity=1] }
也许在JavaScript引擎中的错误!? (使用jdk 1.7.0_60)
自1.7.1版以来,Ant支持Java 1.6的安全控制台输入功能,请参阅Ant Manual。你使用什么版本的Eclipse和Java?或者你可以使用:
AntForms里面有很多输入对话框,并支持密码太
或具有可选的密码屏蔽查询任务
Jera Ant Tasks
编辑:使用Groovy添加一个具体的例子..
您可以使用脚本语言可以打开一个对话框,在这里是用Groovy =
<project>
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"/>
<groovy>
import groovy.swing.SwingBuilder
import javax.swing.JFrame
boolean isAlive = true
swing = new SwingBuilder()
button = swing.button('OK')
frame = swing.frame(title:'Password', defaultCloseOperation:JFrame.EXIT_ON_CLOSE) {
panel {
pw = passwordField(columns:10)
widget(button)
}
}
button.actionPerformed = {
// set Ant property for further processing
properties.'password' = pw.text
isAlive = false
}
frame.pack()
frame.show()
// prevent ant from closing the window
while(isAlive) {
sleep(1000)
}
</groovy>
<echo>$${password} = ${password}</echo>
</project>
为例
最后写自己Inputhandler,见http://sourceforge.net/projects/emaria/files/antdocs/antinput/antinput.pdf/download的细节
证实,我与Eclipse 3.6.2,JDK 1.6.0_26,ant1.8.2不起作用在openSUSE 11.4运行/ 64 – Rebse
相关问题解释为什么这个不便存在:http://stackoverflow.com/questions/2741069 – Antonio