我正在尝试用java编写一个简单的应用程序,它将使用git-tfs自动克隆从TFS到Git repo的整个主干。为了从用户那里获取数据,我使用了一些jtext字段。在其中一个jtext字段中,用户必须写入主干名称。一切正常,但是,如果主干名称包含空格,整个git-tfs进程就不会启动,git tfs日志说要尊重synoophs。
要运行git-tfs,synoophs是:
$ git-tfs.exe --username <username> --password <password> <server-url> <trunk-name> <working-folder-path>
锿。:
$ git-tfs.exe --username=myusernamename --password=mypassword http://127.0.0.1:8080/DefaultCollection $/TrunkName C:\workingFolder
这里我的代码:
commands = new ArrayList<String>();
commands.add("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe");
commands.add("/c");
commands.add("git-tfs.exe");
commands.add("--username=" + usernameTextField.getText());
commands.add("--password=" + passwordTextField.getText());
commands.add(serverUrlTextField.getText());
commands.add(trunkTextField.getText());
commands.add(workingFolder.getText());
ProcessBuilder pb = new ProcessBuilder(this.commands);
Process process = pb.start();
在网上冲浪时,我找到了一个git tfs的解决方案,它将中继名称写入配额中,如$/“trunk name/some/path”。使用powershell中的配额运行git tfs一切正常,但在jtextfield应用程序中编写同样的代码无法再次运行。
为了测试process builder,我尝试使用命令修改ArrayList,方法是手动添加修改后的字符串,使其出现:
...
this.commands.add("$/\"trunk name\"");
...
即使这样也不行,所以我试着:
...
this.commands.add("$/\\\"trunk name\\\"");
..
这是可行的。
在此之后,我试图在jtextfield上写同样的内容,但它无法工作。我如何解决这个问题,从jTextField解析文本,让processBuilder工作?
非常感谢。
我通过从ProcessBuilder更改为Runtime来解决这个问题,所以现在我的代码是:
commands = new ArrayList<String>();
commands.add("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe");
commands.add("/c");
commands.add("git-tfs.exe");
commands.add("--username=" + usernameTextField.getText());
commands.add("--password=" + passwordTextField.getText());
commands.add(serverUrlTextField.getText());
commands.add(trunkTextField.getText());
commands.add(workingFolder.getText());
Runtime runtime = Runtime.getRuntime();
String[] commandsStringArray = commands.toArray(new String[0]);
Process process = runtime.exec(commandsStringArray);
并检查项目名称,如下所示:
private String fixProjectName(String projectName) {
if (projectName.contains(" ")) {
String correct = "";
correct = projectName.replace("$/", "");
correct = "$/\\\"" + correct + "\\\" ";
this.projectName = correct;
return correct;
}
return projectName;
}
顺便说一句,我也想知道如何让ProcessBuilder工作。
每个更好的想法都是受欢迎的。
非常感谢。
我引用了irbanana关于支持PostGIS的空间数据类型的回答。我正在使用MySQL,并试图为自定义数据类型实现EWKBGeomPoint。 我的Gorm模型: 据我所知,MySQL支持这样的插入: 或 如果我使用自己的来满足的界面: 包括在内的整个值在Gorm的单引号中引用,因此它不起作用: 我如何让它工作? 编辑1: 我追踪Gorm代码,最终得到了的函数。在它内部检查且为真,则它进入调用,
我是Spring的新人。最近我试着让Spring批处理和Spring集成一起工作。我想有一个JobListener,它会监听消息到达特定的频道并启动Spring批处理作业。 我在github上找到了一个例子(https://github.com/chrisjs/spring-batch-scaling/tree/master/message-job-launch)我试图以某种方式将Spring批处
我有这样一个问题:我可以写到一个带有地理类型列的Postgis表,并且数据输入正确。当我试图取回它时,我得到了一个java.lang.IllegalArgumentException:不能转换org.PostgreSQL.util.PGObject类型的对象 我使用的是Hibernate Spatial 4.0M1、PostGIS2.0.2、Postgresql 9.1.7和Spring3.2、P
我无法在我的Kotlin Spring Boot应用程序中正确地注入应用程序属性。在我的文件中定义并随后在文件中引用的属性(在resources->META-INF下)没有正确地添加到bean表达式上下文中。使用,当我将鼠标悬停在该属性上时,我会看到错误。试图运行应用程序(将配置属性值construction-inject到类中)会导致通过构造函数参数表示的
Spring Security中主要的提高验证服务的接口是AuthenticationManager,这通常是一个Spring Security的ProviderManager 类的实例。如果你以前用过框架你可能已经熟悉了。如果不是后面的技术预览章节会讲到。这个bean是通过authentication-manager命名空间来注册。你不能使用自定义的AuthenticationManager如果