跳至主要內容
记一个 Windows 下 'posix:permissions' not supported as initial attribute 异常

背景

最近在做项目架构升级,并顺便升级了下基础组件。升级完之后,跑 UT 报一下异常:

Caused by: java.lang.UnsupportedOperationException: 'posix:permissions' not supported as initial attribute
  at java.base/sun.nio.fs.WindowsSecurityDescriptor.fromAttribute(WindowsSecurityDescriptor.java:358)
  at java.base/sun.nio.fs.WindowsFileSystemProvider.createDirectory(WindowsFileSystemProvider.java:509)
  at java.base/java.nio.file.Files.createDirectory(Files.java:700)
  at java.base/java.nio.file.TempFileHelper.create(TempFileHelper.java:134)
  at java.base/java.nio.file.TempFileHelper.createTempDirectory(TempFileHelper.java:171)
  at java.base/java.nio.file.Files.createTempDirectory(Files.java:976)
  at com.google.common.io.TempFileCreator$JavaNioCreator.createTempDir(TempFileCreator.java:102)
  at com.google.common.io.Files.createTempDir(Files.java:439)
  at redis.embedded.util.JarUtil.extractExecutableFromJar(JarUtil.java:13)
  at redis.embedded.RedisExecProvider.get(RedisExecProvider.java:56)
  at redis.embedded.RedisServerBuilder.resolveConfAndExec(RedisServerBuilder.java:105)
  ... 141 more

Mr.Chen大约 2 分钟文章JavaGuavaWindows
Java程序注册为Windows的服务

运行环境

电脑上应该有java运行环境。

需要软件

Java ServiceWrapper

下载地址:http://sourceforge.net/projects/wrapper/

配置过程

  1. 首先将java程序打成jar包。

  2. Java Service Wrapper包解压。

  3. 比如要注册成服务的程序项目目录为workapp,那么在这个目录下面新建三个文件夹:bin、conf、lib。

  4. 把Java Service Wrapper包中bin目录下的Wrapper.exe、src/bin目录下的App.bat.in、InstallApp-NT.bat.in、UninstallApp-NT.bat.in文件拷贝到workapp的bin目录中,并分别改名为App.bat、InstallApp-NT.bat、UninstallApp-NT.bat。

  5. 把Java Service Wrapper包中lib目录下的Wrapper.DLL、wrapper.jar拷贝到workapp的lib目录中。并且将项目的jar和所用到的jar都拷贝到该目录。

  6. 把Java Service Wrapper包中srcconf目录下的wrapper.conf.in拷贝到workapp的conf目录中,并命名为wrapper.conf。

  7. 修改wrapper.conf配置文件,方法如下:

    主要修改以下几项即可:

    • JVM位置:

      wrapper.java.command=C:\jdk1.5.0_07\bin\java
      
    • 运行参数:如:

      wrapper.java.additional.1=-Dprogram.name=run.bat
      
    • 你的Java程序所需的jar包必须全部在此标明,注意路径准确:

      wrapper.java.classpath.1=../lib/wrapper.jar
      wrapper.java.classpath.2=../lib/test_fat.jar
      ……
      
    • 你的Wrapper.DLL或wrapper.jar所在的目录

      wrapper.java.library.path.1=../lib
      
    • MAIN CLASS 此处决定了使用Java Service Wrapper的方式

      wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
      
    • 你的Java应用程序的运行类

      wrapper.app.parameter.1= com.tes.Testjar
      
    • 注册为服务的名称和显示名,你可以随意进行设置

      wrapper.ntservice.name=testService
      wrapper.ntservice.displayname= testService
      
    • 服务描述信息

      wrapper.ntservice.description= testService
      
  8. 修改好了以后,运行MyApp.bat即可运行你的java程序,这里可以测试配置的是否正确,如果可以运行,证明配置ok。

  9. 运行InstallApp-NT.bat可以进行服务的注册,UninstallApp-NT.bat为注销服务。

  10. 运行完注册服务InstallApp-NT.bat可以在控制面板-管理程序-服务中看到你注册的服务名称。(如:testService)


Mr.Chen大约 2 分钟文章JavaWindows
解决 WIN10 无法连接 L2TP VPN 的问题

L2TP VPN-Remote Access

很早就在linode的日本机房买了vps,并在服务器上搭建了l2tp方式的vpn服务,用手机连接一切正常,但是win10死活连接不上。

在网上百度了一圈,各种设置,还是没能连上,后来就搁置了。今天Chrome提示要升级,又想起了这件事,还是不死心,又找了一轮,终于试出来了,其实特别简单,步骤如下:

  1. 单击“开始”,单击“运行”,键入“regedit”,然后单击“确定”

  2. 找到下面的注册表子项,然后单击它:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters

  3. 在“编辑”菜单上,单击“新建”->“DWORD值”

  4. 在“名称”框中,键入“ProhibitIpSec”

  5. 在“数值数据”框中,键入“1”,然后单击“确定”

    图2
  6. 找到下面的注册表子项,然后单击它:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent

  7. 在“编辑”菜单上,单击“新建”->“DWORD值”

  8. 在“名称”框中,键入“AssumeUDPEncapsulationContextOnSendRule”

  9. 在“数值数据”框中,键入“2”,然后单击“确定”

    图2
  10. 退出注册表编辑器,然后重新启动计算


Mr.Chen大约 3 分钟文章WindowsL2TP