我想知道是否有任何方法可以将 Windows 系统路径变量与文件协议一起使用。
例子:
file:///%WINDIR%\System32\calc.exe
file:///C:\Users\%USERNAME%\Desktop
Run Code Online (Sandbox Code Playgroud)
上面的例子不起作用,所以我需要类似的东西。
谢谢。
PS:以上示例在 Windows 资源管理器中有效,但在 Chrome 等浏览器中无效。
我刚刚花了最后一个小时试图找出为什么我的 PATH 变量没有更新我的 cmd.exe。现在我发现它确实更新了,但仅限于某些条件......
我通过更新它Win+Break -> Change Settings -> Advanced -> Environment Variables...
现在,当我通过 PATH 变量打开一个新的命令行时,Win+R -> cmd -> Enter会显示我设置的内容。
但是当我通过打开新的命令行时Shift+Rightclick into folder -> Open command window here,PATH 变量显示过时的内容。

我的问题:为什么会发生这种情况,我该怎么办?
windows cmd path-variables contextmenu environment-variables
传统上,我只会C:\perl\bin在我的PATH变量中,但由于版本冲突,我希望在位置保留不同的perl版本,C:\Perl-versionXY\bin并通过直接调用来执行我的Perl脚本C:\Perl-...\bin\perl.exe theScript.pl.
这实际上是在自动化系统下运行的,我们已经直接调用 C:\perl\bin\perl.exe所有perl脚本.(不过C:\perl\bin是又在PATH).
为了方便不同的Perl版本,我想从PATH中删除C-perl-bin,以确保我们从未看到任何与Perl相关的PATH设置的副作用.
这应该有用吗?那些需要额外DLL文件的模块(比如LibXML,需要在perl的bin目录中使用LibXML.dll)?
我将使用Strawberry Perl便携式并排版本.(谁的自述文件提到了一些PATH设置,但没有提到哪些用于什么.)
当我不使用@RequestBody的@PathVariable id是自动设置为我的Entity班.但如果我使用@RequestBody它不是.我需要在执行验证之前设置idof .为什么它没有而不是它呢?EntityGenericValidator@RequestBody
实体类:
public class Entity {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
//...
}
Run Code Online (Sandbox Code Playgroud)
控制器类:
@Controller
@RequestMapping(value = "/entity")
public class EntityController {
@Autowired
private GenericValidator validator;
@InitBinder
private void initBinder(WebDataBinder binder) {
binder.addValidators(validator);
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public @ResponseBody Response update(
@PathVariable String id,
@Valid @RequestBody Entity entity) …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置JAVA_HOME环境变量 - 我需要将其设置为 64 位版本。
为了确保我有 64 位版本,我java -version通过 cmd 提示符进行了检查,并得到了输出:
Java version "1.7.0_25"
Java<TM> SE Runtime Environment <build 1.7.0_25-b17>
Java Hotspot<TM> 64-bit Server VM <build 23.25-b01, mixed mode>
Run Code Online (Sandbox Code Playgroud)
我假设最后一行验证我有 64 位...所以我去检查输入环境变量的确切路径,发现它Program Files\Java\不包含jdk文件夹。然而,Program Files (x86)\Java\确实如此。相反,前者只有一个jre7文件夹。
我无法将我的环境变量定向到 32 位文件夹,因为Android Studio一直告诉我我需要 64 位 java。我错过了什么?
(如果这属于超级用户而不是这里,请在下面发表评论,我会在这里删除问题)
在我的 Spring 控制器中,我尝试获取 3 个路径变量:
@RequestMapping("{language}/{country}/{term}/catalogue") - @PathVariable String language, @PathVariable String country, @PathVariable String term
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不会被 servlet 识别。
有一些方法可以绑定 URI,例如
@RequestMapping("**/catalogue")并且也@RequestMapping("{language}/{country}/catalogue")可以使用,但是使用第三个路径变量它会停止工作。
控制器本身也映射到特定路径。
路径变量有限制吗?其他通配符是否有可能(例如@RequestMapping("**"))会得到更高的评估?例如 2 个通配符比 3 个定义的值更具体。但通配符应该是实践中的最后一个匹配选项。
关于出现的错误:
首先,使用通配符映射,它们将被匹配。当我禁用通配符映射时,org.springframework.web.HttpRequestMethodNotSupportedException会引发错误。
15:42:53,881 DEBUG [http-bio-18091-exec-31] (org.springframework.web.servlet.DispatcherServlet) - Handler execution resulted in exception - forwarding to resolved error view: ModelAndView: reference to view with name 'errors/exception'; model is null
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodResolver.resolveHandlerMethod(AnnotationMethodHandlerAdapter.java:665)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:431)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
at …Run Code Online (Sandbox Code Playgroud) 我发现了Spring MVC的一个非常奇怪的行为.
我有控制器方法:
@RequestMapping (value = "/delete/{id:.*}", method = RequestMethod.DELETE)
public ResponseEntity<Response> delete(@PathVariable (value = "id") final String id) {
HttpStatus httpStatus = HttpStatus.OK;
final Response responseState = new Response( ResponseConstants.STATUS_SUCCESS );
try {
POJO pojo = mediaFileDao.findById( id );
if (pojo != null) {
delete(pojo);
} else {
httpStatus = HttpStatus.NOT_FOUND;
responseState.setError( "NOT_FOUND" );
}
} catch (Exception e) {
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
responseState.setError( e.getMessage() );
}
return new ResponseEntity<>( responseState, httpStatus );
}
Run Code Online (Sandbox Code Playgroud)
所以,问题是当id包含点(例如"my_file.wav")时,Spring在任何情况下都会返回HTTP 406,但是如果id不包含点,则Spring会按照我的方式返回responseState(作为json).我尝试以不同的方式修复它(添加@ResponseBody,更改jackson版本,将Spring降级到4.0)但没有任何结果.
谁能帮我?
更新我为Spring …
我使用spring mvc 3编写了一个Web应用程序.它提供了一个返回JSON的单个端点.我确实使用url参数成功运行它,但现在我需要更改它以使用路径变量.
我换了控制器
从:
@Controller
public class DataController {
@Autowired
private IDataService dateService;
@RequestMapping(
value = "/some/data",
method = RequestMethod.GET,
produces = "application/json"
)
public @ResponseBody Data getDataByCode(@RequestParam String code) {
return versionService.getDataByCode(code);
}
}
Run Code Online (Sandbox Code Playgroud)
至:
@Controller
public class DataController {
@Autowired
private IDataService dateService;
@RequestMapping(
value = "/some/data/{code}",
method = RequestMethod.GET,
produces = "application/json"
)
public @ResponseBody Data getDataByCode(@PathVariable String code) {
return versionService.getDataByCode(code);
}
}
Run Code Online (Sandbox Code Playgroud)
和我的web xml来映射网址...
从:
<servlet>
<servlet-name>dataBycode</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/config/servlet-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping> …Run Code Online (Sandbox Code Playgroud) 只是为了澄清:我知道如何做到这一点,但开发人员不会自动检查将其添加到 Windows PATH 的选项,这似乎很愚蠢(更不用说它很小并且很容易在安装时不仔细查看而跳过) 。这里的帖子解释说,这是为了进一步让人们控制使用哪个 Python 发行版,除非我误解了,否则这只是说只有一个目的。不过,我也知道Python 3.xpy在终端中使用,而pythonPython 2.x则使用Python 3.x。点也是如此;pip由 Python 2.x 和pip3Python 3.x使用。如果不自动添加它,您还能获得什么更多的控制权?
我意识到这不完全是一个代码问题,也不是真正重要,但我很好奇其背后的原因是什么。
编辑:第一次打开Python安装程序时有两个选项。首先,简单安装Python;大多数人想要什么。第二个是更高级的,经过几个屏幕后,可以选择将其添加到 Windows PATH 变量。第一个没有这个选项。
编辑2:同样,我已经知道将其添加到路径中的重要性。默认情况下不勾选该框似乎没有必要。如上所述,Python 2.x 和 3.x 已经通过pyvs的使用进行了区分python。任何运行多个版本的人都应该足够了解何时添加路径以及何时不添加路径。
这可能是一个更好的问题,直接问 Python 开发人员,而不是 Stack Overflow,但我想看看是否有任何我忽略的答案。
最终编辑:就像我在评论中所说的那样,我的优先事项与开发人员的不同,而且我可能只是很固执。无论如何,感谢您的投入!
在windows系统中,变量环境中不同路径的顺序PATH定义了解析优先级:
例子:
C:/Dir1;C/Dir2C:/Dir1/test.exe和C:/Dir2/test.exetest.exe将解析为C:/Dir1/test.exe这很好,但在 Windows 中有两个 PATH,用户路径和系统路径。并且有以下串联:<system-path>;<user-path>
因此,系统路径似乎总是优先于用户路径。
我错了吗 ?
问候,
path-variables ×10
windows ×5
java ×4
spring-mvc ×4
spring ×3
binding ×1
cmd ×1
contextmenu ×1
file-uri ×1
http-delete ×1
installation ×1
path ×1
perl ×1
python ×1
system-paths ×1
url-mapping ×1
url-pattern ×1
validation ×1