PyDev Jython module_not_found_in_the_pythonpath,自动完成无法正常工作

时间:2013-07-11 13:20:07

标签: java pydev jython pythonpath

我一直在寻找两天试图让PyDev识别我的外部.JAR(它被保护为混淆),但无论我做什么它都不想工作。我已经阅读了近一个小时的文档,试图让它工作。

我正在帮助使用Jython进行脚本编写的仿真服务器。我可以编译和运行仿真服务器,但脚本工作正常,而不使用自动完成服务器引擎部分内部的方法,这些方法在外部.jar中进行了混淆。 下面是一个脚本的示例代码,它使用了混淆.JAR的方法(不使用自动完成,所以我必须浏览包浏览器才能找到我想要使用的方法):

import sys

def CreateStartingCharacter(core, object):

testObject = core.objectService.createObject('object/weapon/ranged/rifle/shared_rifle_t21.iff', object.getPlanet())
testObject.setCustomName('This is a Jython Rifle')
testObject.setStringAttribute('crafter', 'Light')
inventory = object.getSlottedObject('inventory')
inventory.add(testObject)

testClothing = core.objectService.createObject('object/tangible/wearables/cape/shared_cape_rebel_01.iff', object.getPlanet())
testClothing.setCustomName('Test Cape')
testCloak = core.objectService.createObject('object/tangible/wearables/robe/shared_robe_jedi_dark_s05.iff', object.getPlanet())
testCloak.setCustomName('Test Cloak')

inventory.add(testClothing)
inventory.add(testCloak)

return

此脚本由Java中的以下命令执行(核心是外部JAR中的类,被混淆) core.scriptService.callScript("scripts/", "demo", "CreateStartingCharacter", object);

对象是...... CreatureObject object = (CreatureObject)core.objectService.createObject(sharedRaceTemplate, core.terrainService.getPlanetList().get(0));

就像我上面所说的那样,我在脚本中使用的所有方法都来自混淆的JAR,它不支持自动完成。但是,我可以使用不在JAR中的方法,例如:

from resources.common import RadialOptions
from services.sui import SUIWindow
from services.sui.SUIWindow import Trigger
from java.util import Vector
import sys

def createRadial(core, owner, target, radials):
radials.clear()
bank = owner.getSlottedObject('bank')
if bank:
    radials.add(RadialOptions(0, 21, 1, ''))
    radials.add(RadialOptions(0, 7, 1, ''))
    radials.add(RadialOptions(1, RadialOptions.bankTransfer, 3, '@sui:bank_credits'))
    radials.add(RadialOptions(1, RadialOptions.bankitems, 3, '@sui:bank_items'))    
    if owner.getBankCredits() > 0:
        radials.add(RadialOptions(1, RadialOptions.bankWithdrawAll, 3, '@sui:bank_withdrawall'))
    if owner.getCashCredits() > 0:
        radials.add(RadialOptions(1, RadialOptions.bankDepositAll, 3, '@sui:bank_depositall'))

return

...并使用RadialOptions。 control + space将显示所有方法。

非常感谢帮助。此时我觉得它不起作用,因为JAR文件是混淆的或类似的东西。是的,我已经将它添加到我的PYTHONPATH并更新了解释器,就像我的项目的bin文件夹一样。

0 个答案:

没有答案