首先我正在使用linux :)我正在尝试使用JDI启动VM。我需要更改连接器中的参数。连接器是Bootstrap.virtualMachineManager()的LaunchingConnector连接器。 代码是这样的:
for (LaunchingConnector connector : Bootstrap.virtualMachineManager().
launchingConnectors()) {
if (connector.name().equals("com.sun.jdi.CommandLineLaunch")) {
Map<String, Connector.Argument> map = connector.defaultArguments();
StringArgument arg = (StringArgument) map.get("main");
arg.setValue(mainClass); //junit core
arg = (StringArgument) map.get("options");
arg.setValue(classpath);
我正在尝试更改类路径以便它查找JUnit核心我告诉它所以新的类路径是“../../lib/junit-4.6.jar”而类是“org.junit” .runner.JUnitCore“
当我尝试并运行时
VirtualMachine vm = connector.launch(map);
它抛出一个VMStartException,因为它试图运行这样的命令:
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java ../../lib/junit-4.6.jar -Xdebug -Xrunjdwp:transport=dt_socket,address=CIS-Visitor:57881,suspend=y org.junit.runner.JUnitCore
它不会改变类路径,最终它不会返回vm。谁能告诉我改变它的方法?我还想从命令中取出-Xdebug并更改端口号。
由于
答案 0 :(得分:0)
我认为用于启动计算机的类路径不会由您创建的新VM自动继承。但是,如果您使用环境变量来定义类路径,它们就会被继承。有关类似问题,请参阅Can't run JDI trace example: Error: Could not find or load main class。