Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Windows 7中将新JFileChooser创建为本地系统帐户时,Win32ShellFolder2.access中的NPE_Java_Swing_Unit Testing_Jfilechooser_Local System Account - Fatal编程技术网

Java 在Windows 7中将新JFileChooser创建为本地系统帐户时,Win32ShellFolder2.access中的NPE

Java 在Windows 7中将新JFileChooser创建为本地系统帐户时,Win32ShellFolder2.access中的NPE,java,swing,unit-testing,jfilechooser,local-system-account,Java,Swing,Unit Testing,Jfilechooser,Local System Account,我已经为创建JFileChooser的Swing GUI编写了单元测试。由于单元测试作为服务在构建服务器上运行,因此单元测试需要作为本地系统帐户运行。但是,当单元测试尝试创建新的JFileChooser时,它们会抛出NullPointerException 我已将问题简化为将以下主类作为本地系统帐户运行(不是真正的代码) 使用以下生成文件 <project> <target name="clean"> <delete dir="build"/> &l

我已经为创建JFileChooser的Swing GUI编写了单元测试。由于单元测试作为服务在构建服务器上运行,因此单元测试需要作为本地系统帐户运行。但是,当单元测试尝试创建新的JFileChooser时,它们会抛出NullPointerException

我已将问题简化为将以下主类作为本地系统帐户运行(不是真正的代码)

使用以下生成文件

<project>

<target name="clean">
    <delete dir="build"/>
</target>

<target name="compile" depends="clean">
    <mkdir dir="build/classes"/>
    <javac srcdir="src" destdir="build/classes"/>
</target>

<target name="jar" depends="compile">
    <mkdir dir="build/jar"/>
    <jar destfile="build/jar/FileChooserAsSystem.jar" basedir="build/classes">
        <manifest>
            <attribute name="Main-Class" value="com.example.mcgr.FileChooserAsSystem"/>
        </manifest>
    </jar>
</target>

<target name="run">
    <java jar="build/jar/FileChooserAsSystem.jar" fork="true"/>
</target>

</project>
如何在本地系统帐户启动的JVM中创建JFileChooser对象

我目前使用的是JVM版本1.7.02532bit,并在WindowsServer2008和Windows7上进行了测试。还有一个要求意味着我不能从32位JVM切换到64位JVM

我试过谷歌的各种建议,包括

  • 正在传递-Dswing.disableFileChooserSpeedFix=true
  • 通过-Duser.home=/
  • 传递-Dtemp.dir=C:/temp
。。。但没有人改变结果


谢谢您的帮助。

我认为这是Java 7的问题。请检查您的版本并尝试其他版本。或者升级您的java版本。

我碰巧遇到了一个非常类似的问题,我成功地解决了这个问题,通过配置管理员帐户(在配置中,而不仅仅是以管理员身份启动)来执行服务。请注意,对于没有密码的管理员帐户,您将无法执行此操作(当然,如果不接触注册表,则无法执行)。

这不是JVM问题,而是权限问题。我最近在Windows10机器上遇到了运行Java8V92的类似堆栈跟踪

要解决此问题,请将Windows服务设置为以管理员帐户登录(启动服务,突出显示服务并显示属性,在Windows 10中选择“登录”选项卡):


这是用户配置文件服务吗?@skia.heliou否不是用户配置文件服务。在我的例子中,这个问题只出现在运行自动化测试的工具中。在本地工作站上运行时,这不是问题。我们必须调整该工具服务的权限。希望这有帮助!你能告诉我哪个是你的工具吗?您是如何调整权限的?@user3768904我们的单元测试是使用jUnit编写的,在Ant脚本中定义执行,并通过Jenkins启动。依赖于JFileChooser的测试在通过Eclipse或本地Ant运行启动时运行良好,但在服务器上失败。我使用上述权限更改了Jenkins服务。希望这有帮助。
<project>

<target name="clean">
    <delete dir="build"/>
</target>

<target name="compile" depends="clean">
    <mkdir dir="build/classes"/>
    <javac srcdir="src" destdir="build/classes"/>
</target>

<target name="jar" depends="compile">
    <mkdir dir="build/jar"/>
    <jar destfile="build/jar/FileChooserAsSystem.jar" basedir="build/classes">
        <manifest>
            <attribute name="Main-Class" value="com.example.mcgr.FileChooserAsSystem"/>
        </manifest>
    </jar>
</target>

<target name="run">
    <java jar="build/jar/FileChooserAsSystem.jar" fork="true"/>
</target>

</project>
 [java] Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
 [java]     at sun.awt.shell.Win32ShellFolder2.access$200(Win32ShellFolder2.java:72)
 [java]     at sun.awt.shell.Win32ShellFolder2$1.call(Win32ShellFolder2.java:242)
 [java]     at sun.awt.shell.Win32ShellFolder2$1.call(Win32ShellFolder2.java:237)
 [java]     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
 [java]     at java.util.concurrent.FutureTask.run(FutureTask.java:166)
 [java]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
 [java]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
 [java]     at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Win32ShellFolderManager2.java:502)
 [java]     at java.lang.Thread.run(Thread.java:724)