我有以下问题.我在NetBeans IDE 6.8中有一个Java项目.当我编译它并产生一个包含所有可能的.jar文件时,META-INF就不对了.它不包含要执行的类 - 使用main()方法.
当我单击IDE中的"运行"按钮时,一切正常.项目的设置也是正确的 - 指向我项目中的一个类.
我尝试使用清单文件添加文件夹META-INF,但我没有管理.
有没有办法在NetBeans中手动执行此操作,因为我发现如果我在清单中添加缺少的Main类,一切正常.
(我想我遇到了某种错误...)
//编辑:我之后的结果是我希望使用NetBeans构建创建的jar可以使用命令执行:
从Sun文档引用:
在清单文件中设置Main-Class后,您可以从命令行运行该应用程序:
java -jar app.jar
我一直在研究如何开发可以加载插件的应用程序.到目前为止,我已经看到这可以通过定义一个接口来实现,并让插件实现它.
但是,我当前的问题是如何在Jars中打包时加载插件.有没有"最好的"方法呢?
我正在考虑的当前逻辑是让每个插件和他们的Jar内部寻找实现接口的类.但我不知道如何进行这样的查找.我认为这个逻辑可能不是很好,但我找不到关于这个特定主题的任何有用信息.
**Edit1:**添加更多信息:预期的插件将是包含在主应用程序的Jar所在子目录中的Jar文件,如下所示:
应用程序的文件夹
| - Main_Application.jar
| - 插件
| - Plugin1.jar
| - Plugin2.jar
| - Steve's_plugin.jar
等等.
我期望Application能够在运行时加载文件夹中的所有插件.所以在代码中,它只会意识到插件的文件夹应该存在,并且应该在这样的文件夹中有Jars.
假设我有一个这样的插件界面:
interface Plugin
{
public void run();
}
Run Code Online (Sandbox Code Playgroud)
插件将由实现此类接口的类标识,如此
class Plugin1 implements Plugin
{
//attributes and other methods
@override
public void run()
{
//something happens here
}
}
class Plugin2 implements Plugin
{
//attributes and other methods
@override
public void run()
{
//something happens here
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序应该只编译一次,并且能够在执行时加载添加到文件夹的任何插件.为了使Application能够加载任何插件,我是否需要建立Jar内容的规则,如包名称和实现接口的类?或者预计实现插件接口的类可以在Jar中的任何包中,并且有任何名称?
对于我想用这些插件做的事情,这是更通用的方法.简而言之,我打算构建一个具有选项卡的应用程序,每个插件将提供每个选项卡的界面和功能.我正在尝试这个,因为我希望能够单独维护每个选项卡,并且不希望重新编译整个应用程序,因为只有一个组件的更改根本不会影响其他组件.
我创建了一个 JAR 文件,然后将其添加到我的项目的构建路径中。现在我如何将它导入到我的类中以便我可以使用它?import java-class.jar;到目前为止我只尝试过。