作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在运行某些测试时遇到错误 java.lang.NoClassDefFoundError
只有几次。
设置如下:测试用 Scala 编写,服务用 Scala 和 Java 编写。也使用 ant 和 ivy。
Order.scala 看起来像这样:
object Order extends JdbcEnabled {
val orderServiceClientIpAddress = Network.localIpAddress
val PersonalOffersSaleId = "123"
lazy val checkoutClient = new CheckoutClientImpl(YamlConfigFactory.loadConfig(
this.getClass.getClassLoader.getResourceAsStream("core_config.yaml")
).getRequiredSubConfig("core").getRequiredSubConfig(Environment.HostEnv))
val storeList = new JLinkedList[Store]()
storeList.add(OrderHelper.getSelectedStore)
var skuList = OrderHelper.getAvailableSkus
val skusForInternationalOrders = skuList
def createOrder(){...}}
有许多测试使用 TestNG 运行。有时所有的测试都毫无问题地通过了,但有时它们会因为这个异常而失败。
下面是测试失败时如何调用 Order api 的片段。
val orderNumber = Order.createOrder()
这是测试失败时的完整堆栈跟踪:
java.lang.NoClassDefFoundError: Could not initialize class com.api.Order$
at com.CreateOrder.setUpOnce(CreateOrder.scala:35)
该类中的第 35 行,CreateOrder.scala 是:
val orderNumber = Order.createOrder()
最佳答案
这可能不是您的整个类路径,您必须在某处找到缺失类的名称(可能在“由...引起”之后)。也许 TestNG 可以配置为向您显示完整的堆栈跟踪。
无论如何,初始化错误意味着“object Order”在其构造函数中抛出异常,所以看看您在那里使用的是什么:可能缺少 JDBC 类?或者您正在通过类加载器检索的配置文件?
关于java.lang.NoClassDefFoundError : Could not initialize class 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12988261/
我是一名优秀的程序员,十分优秀!