从Java设置查询字符串';s Desktop.getDesktop().browse(URI);

从Java设置查询字符串';s Desktop.getDesktop().browse(URI);,java,html,url,uri,query-string,Java,Html,Url,Uri,Query String,我试过谷歌搜索,但找不到答案。我正在编写一个纯Java桌面应用程序。帮助系统通过使用桌面类浏览功能并为其提供URI来启动。当我添加“”时,URI在Java中失败。我想将程序版本号传递到浏览器中的脱机帮助页,但我不知道如何设置查询字符串 我正在运行RedHat 6。我正在使用以下代码: uri = new URI("file", "", programPath, "version=1.0.3", ""); Desktop.getDesktop().browse(uri); 我在浏览函数上得到一个

我试过谷歌搜索,但找不到答案。我正在编写一个纯Java桌面应用程序。帮助系统通过使用桌面类浏览功能并为其提供URI来启动。当我添加“”时,URI在Java中失败。我想将程序版本号传递到浏览器中的脱机帮助页,但我不知道如何设置查询字符串

我正在运行RedHat 6。我正在使用以下代码:

uri = new URI("file", "", programPath, "version=1.0.3", "");
Desktop.getDesktop().browse(uri);
我在浏览函数上得到一个IOException。它只说“未能显示URI:”


如果我使用完整的uri路径并将其粘贴到浏览器中,它就会工作。我完全被这个问题难住了…

好吧,所以我从来没有按照我想要的方式工作过,但是如果我使用uri构造函数,它只需要一个字符串,然后我将路径作为正常路径提供给它,它总是工作的,然后添加“#+versionNumberVar”"; 那就行了!这是令人沮丧的,因为它无法与“”version=“+versionNumberVar一起工作,但我终于得到了我所需要的。另外,那些其他的构造器不为我工作,这是令人惊讶的。不幸的是,URI错误消息很神秘,它只是说“未能显示URI”。

如何失败?你能举一个URI字符串的例子吗?在Windows7上使用JDK7对我来说很好。从下载并运行演示代码,并将URI粘贴到演示中进行测试。发布您的文章,演示如何测试代码,以及如果您仍然需要更多帮助,如何构建URI。您看过教程中的代码了吗?代码只接受URI的字符串。你在节目中试过吗?您是否打印了toString()表示以比较硬编码字符串和生成的字符串?发布您的SSCCE,使用我们可以在web上访问的URI演示问题。你提供的代码没有告诉我们任何事情。我们不知道programPath是什么。我认为文件URI不支持查询字符串。我认为这只是一个HTTP URI。查询字符串由HTTP服务器处理,因此,除非您在计算机上运行服务器,否则我认为is不会工作。如果您想要传递版本号,那么您需要将其构建到您的文件名中,可能需要为每个版本提供一个目录结构。再次发布你的SSCCE,展示了硬编码URI的代码是如何工作的。你能把版本变量放在hashbang片段中而不是查询中吗?由于您必须使用JavaScript来处理它,因此它同样有用。