Java:如何集成其他软件

时间:2012-06-11 20:38:43

标签: java api nlp integration

我总是对StackOverflow的蜂巢头脑印象深刻,并希望你能指出我在这里正确的方向。

我参加了一些Java编程课程,并了解如何编写一个相当复杂的Java程序。但是,我从未学会如何将其他人的软件集成到我自己的程序中。

对于一个新项目,我想将part-pf-speech taggerchunker集成到我的代码中,但不知道如何“加载”这些程序(如果加载是正确的术语)。

我当然不是在寻找分步说明,而是如何解决这类问题的指南。如果有人能让我开始朝着正确的方向前进,我将非常感激。

谢谢, 亚当

4 个答案:

答案 0 :(得分:3)

看起来你想要使用的外部部件本身就是Java。这意味着您很幸运 - 您可以使用纯Java语言功能来实现它。

它有两件事:

1)必须导入与外部库直接交互的源文件,否则您必须使用完全限定的类名来引用它们。 导入是使用import语句完成的。这些陈述应该在您的类声明之前出现,如下所示:

import foo.*;       //import all classes from the package foo
import foo.bar.Baz; //import only the Baz class from the package foo.bar

public class MyClass {
    Baz myBaz = null;               //declare a member of type Baz class from package foo.bar
    foo.bar.BazBaz myBazBaz = null; //by using a fully qualified classname, I didn't need to write an import statement for foo.bar.BazBaz  
}

2)编译源代码时,java编译器需要知道在源代码中引用的类的位置。这是通过类路径完成的。

类路径可以是.class文件(已编译的java类)的列表,也可以是.jar文件(java档案)和.zip文件。通常,项目会将所需的所有类打包在一个或多个.jar文件中。

这些类的位置与您在java代码中与它们交互的方式无关。编译器的工作是读取这些jar和类文件,并找到您在代码中引用的类。如果编译器无法找到您所指的类,则会出现编译时错误,无法编译您的程序。

您可以将类路径指定为java编译器命令行的参数(http://docs.oracle.com/javase/6/docs/technotes/tools/windows/javac.html#options)。然而,这变得非常笨拙。

相反,您应该使用像ant这样的构建工具来为您完成这项工作。入门的最佳方式是阅读此页面:http://ant.apache.org/manual/index.html

从那里,转到"使用apache ant"然后到#34;编写一个简单的构建文件"完整地说,他们解释了如何在那里很好地设置类路径。

答案 1 :(得分:2)

在编译时,您需要在classpath上创建课程,并在运行程序时再次使用。

看来这些项目分发了src和jar。抓住罐子,然后在classpath上使用它们。设置类路径后,您需要import您正在使用的任何特定类/包。

请参阅this有关管理classpath的教程。它涵盖了命令行编译/执行的基础知识;如果您使用的是特定的构建系统或IDE,则说明会有所不同。

另请注意第二个链接上的特定说明,以使数据文件可用。为此,他们也使用classpath

答案 2 :(得分:1)

配置构建路径以包含.jar文件。

如果您正在使用Eclipse,则可以在Project Explorer中右键单击项目文件,然后选择Configure Build Path。最后,添加外部存档(您下载的存档)。现在,这些功能将在您的程序中随时可用。

或者更健壮的方法是在eclipse项目中创建一个名为“lib”的文件夹,并在其中包含所有jar文件。然后从“配置构建路径”窗口中选择lib文件夹中的那些jar文件。这使得与其他程序员共享项目变得容易,无论他们是在Windows还是Linux上(当添加外部jar时,它会保存绝对路径,因此如果在其他人的PC上找不到C:\上的内容)还提供了良好的依赖集成源代码管理器上的库,如GIT,CVS和SVN。

答案 3 :(得分:0)

通常,Java库作为JAR文件分发。然后在您的程序中,您只需导入新包并使用提供的API。

编译和运行时,必须确保库包含在类路径中,以便他们知道在哪里查找包。