如何在Java中加载外部.class文件?

时间:2018-01-07 11:01:06

标签: java eclipse reflection

我正在尝试加载并获取Java中的类的一些信息。在下面的代码中,apdb = {'AP Database': [{'AP Type': '110H', 'Name': 'varagu', 'Public IP': '100.20.300.400', 'Wired MAC Address': 'aa:bb:cc:dd:ee:11'}, {'AP Type': '110H', 'Name': 'thinai', 'Public IP': '100.20.300.500', 'Wired MAC Address': 'aa:bb:cc:dd:ee:22'}, {'AP Type': '110H', 'Name': 'Ragi', 'Public IP': '100.20.300.600', 'Wired MAC Address': 'aa:bb:cc:dd:ee:33'}]} ap_database = apdb.get('AP Database') # no need to do this since ap_database is already a list, so we can iterate over it. # apall = ap_database[0], ap_database[1], ap_database[2] # ip_list does not change, so we can define it once outside the loop ip_list = ['100.20.300.400', '100.20.300.500', '100.20.300.700'] # let us add two more variables to hold the fail and success list success_list = [] fail_list = [] for ap in ap_database: # ap is a dict, so use ap.get('key') or ap['key'] instead of ap.__getitem__('key') # note that ap.get('key') returns None if key does not exist, while ap['key'] throws an error. public = ap.get('Public IP') name = ap.get('Name') # check whether public is in ip_list and print appropriate message if public in ip_list: print public, name, 'Success' success_list.append(ap) else: print public, name, 'Fail' fail_list.append(ap) 位于同一个eclipse项目中,[file, file2]位于android studio项目中。但是以下行得到[file3]

java.lang.ClassNotFoundException

java是否支持加载当前项目中不存在的类?如果可能,我该怎么办?

Class c3 = loader.loadClass("edu.test.activity.GPSActivity");  

2 个答案:

答案 0 :(得分:1)

使用类/ URLClassLoader根目录创建bin,而不包含子目录:

File file = new File("C:/jworkspace/all_java/bin");
File file2 = new File("C:/jworkspace/all_java/bin");
File file3 = new File("C:/android/workspace/AllTest/app/build/intermediates/classes");

注意,URLClassLoader用于动态加载在运行应用程序之前未知位置的类。在您的情况下,将这些目录添加到Java构建路径可能会起到作用:

  1. 项目>中属性:Java构建路径 ,选项卡 单击 添加外部类文件夹...
  2. 选择目录,然后点击 确定
  3. 对其他两个目录重复步骤1.和2.
  4. 在Java代码中,只需要相应的import语句,例如: G。 import edu.test.annotate.Account;

答案 1 :(得分:1)

  

java是否支持加载当前项目中不存在的类?如果可能,我该怎么办?

Java没有“当前项目”的概念,也没有任何项目概念。项目仅存在于Eclipse中,而不是Java中。

为了使你的工作正常,我将在你当前的项目级别引入一个编译时依赖:在Eclipse中右键单击它,然后选择“Properties”,然后选择“Java Build Path”,然后选择“Libraries”,然后“添加类文件夹”,您将在其中添加您的andorid项目的类文件夹,然后单击“应用”和“确定”。