Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Jython导入位于不同目录中的“同名”Java文件_Python_Error Handling_Jython - Fatal编程技术网

Python Jython导入位于不同目录中的“同名”Java文件

Python Jython导入位于不同目录中的“同名”Java文件,python,error-handling,jython,Python,Error Handling,Jython,我将使用Jython导入两个假定相同的java文件进行比较。比较是在返回值、签名和构造函数的基础上进行的,虽然问题出在导入中,但这很好。一个文件位于提交文件夹中,另一个位于解决方案文件夹中。问题是, 当我运行以下代码时 sys.path.append('Solution/') import GeometricShape sys.path.pop() sys.path.append('Submission/') import GeometricShape

我将使用Jython导入两个假定相同的java文件进行比较。比较是在返回值、签名和构造函数的基础上进行的,虽然问题出在导入中,但这很好。一个文件位于提交文件夹中,另一个位于解决方案文件夹中。问题是,

当我运行以下代码时

    sys.path.append('Solution/')
    import GeometricShape
    sys.path.pop()

    sys.path.append('Submission/')
    import GeometricShape    <---- the imported module is the same as the one above
    sys.path.pop()
有解决办法吗


谢谢…

您是在比较源文件还是编译的字节码文件?不管怎样,如果需要,为什么要使用导入而不是使用文本或二进制I/O打开文件来比较文件的内容?这样我就可以使用Jython.Hmmm调用它们的Java方法。。。两个相同的类加载到一个运行时。。。我认为这本身就是一个问题。但是,当目标是验证文件是否相同时,为什么要调用这些方法呢?您的任务是确保一个类的两个不同实现在功能上是相同的吗?如果是这样,那么单元测试就是这样的。这些是Java类,不是Jython源文件,对吗?测试文件是否生成功能等价的类的最佳选择是使用或。但是,如果必须使用Jython进行测试,请编写一个Jython文件,其中包含调用所有构造函数和方法并测试结果的测试代码。然后,导入一个文件,运行测试。然后导入另一个并再次运行测试。只要两个类都通过了相同的测试,它们就相当于您的测试覆盖了可能性的程度,但并不完全。我所说的不完全,仅仅是指单元测试不能保证非平凡类的完全等价性。很少测试所有可能的边界条件,更不用说测试所有可能的输入和输出组合了。或者在确保正确的算法或一般软件性能方面更可靠,但它们很少在证明特定算法之外使用。
java.lang.NoClassDefFoundError: Solution/GeometricShape (wrong name: GeometricShape)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at org.python.core.SyspathJavaLoader.findClass(SyspathJavaLoader.java:123)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.python.core.Py.loadAndInitClass(Py.java:909)
    at org.python.core.Py.findClassInternal(Py.java:844)
    at org.python.core.Py.findClassEx(Py.java:895)
    at org.python.core.packagecache.SysPackageManager.findClass(SysPackageManager.java:133)
    at org.python.core.packagecache.PackageManager.findClass(PackageManager.java:28)
    at org.python.core.packagecache.SysPackageManager.findClass(SysPackageManager.java:122)
    at org.python.core.PyJavaPackage.__findattr_ex__(PyJavaPackage.java:137)
    at org.python.core.PyObject.__findattr__(PyObject.java:863)
    at org.python.core.packagecache.PackageManager.lookupName(PackageManager.java:136)
    at org.python.core.PyModule.impAttr(PyModule.java:106)
    at org.python.core.imp.import_next(imp.java:720)
    at org.python.core.imp.ensureFromList(imp.java:888)
    at org.python.core.imp.ensureFromList(imp.java:856)
    at org.python.core.imp.import_module_level(imp.java:850)
    at org.python.core.imp.importName(imp.java:917)
    at org.python.core.ImportFunction.__call__(__builtin__.java:1220)
    at org.python.core.PyObject.__call__(PyObject.java:357)
    at org.python.core.__builtin__.__import__(__builtin__.java:1173)
    at org.python.core.imp.importFromAs(imp.java:1011)
    at org.python.core.imp.importFrom(imp.java:987)
    at org.python.pycode._pyx2.get_solution$4(D:\Grader\autograder.py:48)
    at org.python.pycode._pyx2.call_function(D:\Grader\autograder.py)
    at org.python.core.PyTableCode.call(PyTableCode.java:165)
    at org.python.core.PyBaseCode.call(PyBaseCode.java:120)
    at org.python.core.PyFunction.__call__(PyFunction.java:307)
    at org.python.pycode._pyx2.main$9(D:\Grader\autograder.py:158)
    at org.python.pycode._pyx2.call_function(D:\Grader\autograder.py)
    at org.python.core.PyTableCode.call(PyTableCode.java:165)
    at org.python.core.PyBaseCode.call(PyBaseCode.java:120)
    at org.python.core.PyFunction.__call__(PyFunction.java:307)
    at org.python.pycode._pyx2.f$0(D:\Grader\autograder.py:159)
    at org.python.pycode._pyx2.call_function(D:\Grader\autograder.py)
    at org.python.core.PyTableCode.call(PyTableCode.java:165)
    at org.python.core.PyCode.call(PyCode.java:18)
    at org.python.core.Py.runCode(Py.java:1275)
    at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:235)
    at org.python.util.jython.run(jython.java:247)
    at org.python.util.jython.main(jython.java:129)