通过添加依赖项运行Maven项目

通过添加依赖项运行Maven项目,maven,nlp,dependencies,Maven,Nlp,Dependencies,我正在尝试从Emory NLP运行此DDR(深度依赖关系表示)转换工具: 我在一个名为depConverter的新目录中创建了一个新的Maven项目,并将指定的依赖项从网站添加到depConverter中的pom.xml文件中。这个pom.xml文件是通过自动创建一个新的默认Maven项目构建的。我想我在这个pom.xml文件中缺少了一些东西来正确运行DDR工具,因为当我在depConverter中运行指定的命令行命令java cloud.elit.DDR.bin.DDRConvert-I re

我正在尝试从Emory NLP运行此DDR(深度依赖关系表示)转换工具:

我在一个名为depConverter的新目录中创建了一个新的Maven项目,并将指定的依赖项从网站添加到depConverter中的pom.xml文件中。这个pom.xml文件是通过自动创建一个新的默认Maven项目构建的。我想我在这个pom.xml文件中缺少了一些东西来正确运行DDR工具,因为当我在depConverter中运行指定的命令行命令
java cloud.elit.DDR.bin.DDRConvert-I relcl.parse-oe tsv
时,我得到了以下错误:

Error: Could not find or load main class cloud.elit.ddr.bin.DDRConvert

我不完全清楚Maven将如何加载这个类。我必须创建java文件才能运行此工具吗?

假设问题是关于从命令行运行:

当您试图从命令行运行时,DDR库不在类路径中。这就是为什么JVM无法加载期望在此库中找到的主类

因此,您可以尝试运行:

java -classpath <PATH_TO_DDR_JAR> cloud.elit.ddr.bin.DDRConvert -i relcl.parse -oe tsv
java-classpath cloud.elit.ddr.bin.DDRConvert-i relcl.parse-oe tsv
这是最简单的方法。 jar应该在本地maven存储库中找到(默认情况下,~/.m2/存储库)

Maven简而言之是一个构建工具,它不会在您的工件/依赖项中运行任何东西,就像您的案例中一样

或者,如果您想“使用”pom中提供的信息(如依赖关系图),您仍然可以运行
mvn exec:exec
/
mvn exec:java
插件,并提供相关参数来运行您选择的类


您可以找到有关exec插件的更多信息。

假设问题是关于从命令行运行:

当您试图从命令行运行时,DDR库不在类路径中。这就是为什么JVM无法加载期望在此库中找到的主类

因此,您可以尝试运行:

java -classpath <PATH_TO_DDR_JAR> cloud.elit.ddr.bin.DDRConvert -i relcl.parse -oe tsv
java-classpath cloud.elit.ddr.bin.DDRConvert-i relcl.parse-oe tsv
这是最简单的方法。 jar应该在本地maven存储库中找到(默认情况下,~/.m2/存储库)

Maven简而言之是一个构建工具,它不会在您的工件/依赖项中运行任何东西,就像您的案例中一样

或者,如果您想“使用”pom中提供的信息(如依赖关系图),您仍然可以运行
mvn exec:exec
/
mvn exec:java
插件,并提供相关参数来运行您选择的类


您可以找到有关exec插件的更多信息。

感谢您提供有关类路径的提示!我遇到的新问题是输入文件语法。如果我没有在-I选项后面指定,我收到错误消息:错误:
无法找到或加载主类relcl.parse
我尝试使用尖括号指定路径:
java-classpath cloud.elit.ddr.bin.DDRConvert-I relcl.parse-oe tsv
,但随后我得到了
无法识别的选项:-oe错误:无法创建java虚拟机。错误:发生致命异常。程序将退出。
我甚至将relcl.parse文件直接放入depConverter,但它仍然“找不到主类”。您不需要方括号,它只是一个占位符。顺便说一句,你说你用maven。您自己的模块中是否有java代码,或者您使用maven只是为了下载DDRJAR?我使用maven来下载DDRJAR。我似乎已经找到了一个解决方案,运行mvn clean install,然后从那里指定一个类路径。这是我最终使用的最后一个命令(一个朋友帮我找到了类路径),但老实说,我真的不知道为什么它会起作用
java-cp-elit-ddr/target/elit-ddr-0.0.5-SNAPSHOT.jar cloud.elit.ddr.bin.DDRConvert-d directory/with/parse/files
在任何情况下,我都无法实际使用原始网站中列出的命令。这些仍然给了我错误。谢谢你给我关于类路径的提示!我遇到的新问题是输入文件语法。如果我没有在-I选项后面指定,我收到错误消息:错误:
无法找到或加载主类relcl.parse
我尝试使用尖括号指定路径:
java-classpath cloud.elit.ddr.bin.DDRConvert-I relcl.parse-oe tsv
,但随后我得到了
无法识别的选项:-oe错误:无法创建java虚拟机。错误:发生致命异常。程序将退出。
我甚至将relcl.parse文件直接放入depConverter,但它仍然“找不到主类”。您不需要方括号,它只是一个占位符。顺便说一句,你说你用maven。您自己的模块中是否有java代码,或者您使用maven只是为了下载DDRJAR?我使用maven来下载DDRJAR。我似乎已经找到了一个解决方案,运行mvn clean install,然后从那里指定一个类路径。这是我最终使用的最后一个命令(一个朋友帮我找到了类路径),但老实说,我真的不知道为什么它会起作用
java-cp-elit-ddr/target/elit-ddr-0.0.5-SNAPSHOT.jar cloud.elit.ddr.bin.DDRConvert-d directory/with/parse/files
在任何情况下,我都无法实际使用原始网站中列出的命令。这些仍然给了我错误。