【发布时间】:2011-11-29 10:25:46
【问题描述】:
我正在寻找一种在 Java 应用程序中获取唯一文件 ID 的方法,并遇到了这个问题:
Unique file identifier in windows
现在,我尝试了 Ashley Henderson 本人(提出问题的那个人)提供的答案,并且在 C# 中运行良好。但我需要在 Java 中执行此操作,以便让应用程序跨平台工作。
有没有办法将它移植到 Java,或者以其他方式获取相同的 id?
编辑:
我现在几乎可以使用 eee 的解决方案了,我只需要将它放在库中,当我将它编译为库时出现错误,即使在测试应用程序中一切正常一切都包括在内。但是我尝试导入一个单独的库(没有编译器错误)我得到这个运行时错误:
debug:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/Structure
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at winfileid.FileId.getFileId(FileId.java:37)
at testfileid.TestFileId.main(TestFileId.java:19)
Caused by: java.lang.ClassNotFoundException: com.sun.jna.Structure
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 14 more
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
我在编译时已将 jna.jar 和 platform.jar 包含在库中...请再次注意,我对 Java 很陌生,但我做错了什么?
【问题讨论】:
-
我怀疑你必须使用 JNI 来获取它。为什么你仍然想要这些信息?
-
用例是什么 - 为什么需要唯一 ID?
-
用例是在文件被移动或重命名时跟踪文件,以保留来自其他文件的链接。
-
@AndersSvensson 由于您的最新编辑使用了我的解决方案,因此在您的编辑中应如此说明。否则,任何人都会对此感到困惑。关于异常错误,您是使用 Eclipse/Netbean IDE 编译它还是从命令行编译它?这将有助于解决问题...
-
对,对不起,编辑它以表明编辑基于您的解决方案。我用 NetBeans 编译。
标签: java windows filesystems