问题描述
我正在使用 JDEPS 列出库的依赖项以确保它们得到满足。
我最近从 Apache POI v4.1.1 升级到 v5.0.0,其中 JigSaw modules were added。
以前,以下命令会输出依赖项:
jdeps --multi-release 11 poi-scratchpad-4.1.1.jar
但现在使用 v5.0.0,我得到:
jdeps.exe --multi-release 11 poi-scratchpad-5.0.0.jar
Exception in thread "main" java.lang.module.FindException: Module commons.math3 not found,required by org.apache.poi.scratchpad
at java.base/java.lang.module.Resolver.findFail(Resolver.java:894)
at java.base/java.lang.module.Resolver.resolve(Resolver.java:191)
at java.base/java.lang.module.Resolver.resolve(Resolver.java:140)
at java.base/java.lang.module.Configuration.resolve(Configuration.java:422)
at java.base/java.lang.module.Configuration.resolve(Configuration.java:256)
at jdk.jdeps/com.sun.tools.jdeps.JdepsConfiguration$Builder.build(JdepsConfiguration.java:564)
at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.buildConfig(JdepsTask.java:603)
at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:557)
at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:533)
at jdk.jdeps/com.sun.tools.jdeps.Main.main(Main.java:49)
我有 commons-math3
库,但即使我通过 -classpath
参数包含它,我仍然遇到同样的问题。
解决方法
使用 from tkinter import *
root = Tk()
root.title('Registration form')
root.geometry("200x200")
def openaddimage():
addimage = Toplevel(root)
addimage.title("Add image/screenshot below")
addimage.geometry("400x200")
addimage.grab_set()
btn2 = Button(root,text='Add Image',width=10,bg='darkblue',fg='white',command=openaddimage).place(x=170,y=300)
root.mainloop()
而不是 --module-path
选项来解析 -classpath
的模块应该对您有用。
在实践中,为了简单起见,您可以将所有依赖项详细到一个文件夹中,然后将其视为模块路径,如下所示:
在上图中,我创建了一个 commons-math3-3.6.1.jar
文件夹,其中包含 dependencies
的所有依赖库的 .jar
。从同一目录进一步执行以下命令有效:
poi-scratchpad