我有一些分析数据的代码,并且我意识到我想要一些针对非常特定的数据源而不是通用处理的代码。任何单独的来源都可能随时间而变化,并且已经有几个不同的来源需要考虑。为了处理这种情况,我从 Java 启动了完整的独立程序,这很好,但是有一些问题,我决定改用动态类加载。我从 v 1.1 开始一直在使用 Java,并且通常熟悉大多数 Java 问题,但是这个特定任务让我想知道我是否使用了错误版本的 Java或类似的版本,因为我得到的错误看起来像方法调用我我的版本不知道我正在尝试。我刚在想也许我遗漏了一个重要的进口声明?
我发现了几个很好的例子,其中最好的似乎是这个,因为它完全符合我的意愿:http://media.techtarget.com/tss/static/articles/content/dm_classForname/DynLoad.pdf
代码的第一个示例正是我想做的那种事情,所以,我从中提取了一些内容 - 与我自己做的事情(我一直在努力)没有太大不同,但它不会t 编译 - 各种“找不到符号”错误。由于我的代码更加庞大,我自己尝试了它们,它也不会编译,和我的一样!这是该代码:
public class DynamicLoader
{
public static void main(String[] args) throws Exception
{
Class toRun = Class.forName(args[0]);
Method mainMethod = findMain(toRun);
mainMethod.invoke(null, new Object[] { args });
}
private static Method findMain(Class clazz) throws Exception
{
Method[] methods = clazz.getMethods();
for (int i=0; i<methods.length; i++)
{
if (methods[i].getName().equals("main"))
return methods[i];
}
return null;
}
}
当我尝试编译它时,我得到:
# javac DynamicLoader.java
DynamicLoader.java:11: error: cannot find symbol
private static Method findMain(Class clazz) throws Exception
^
symbol: class Method
location: class DynamicLoader
DynamicLoader.java:8: error: cannot find symbol
Method mainMethod = findMain(toRun);
^
symbol: class Method
location: class DynamicLoader
DynamicLoader.java:13: error: cannot find symbol
Method[] methods = clazz.getMethods();
^
symbol: class Method
location: class DynamicLoader
3 errors
我的java版本:javac 1.7.0_45
我想问题很简单/基本,但是查看文档没有任何线索!