2015-03-27 23 views
5

Tôi biết câu hỏi này đã được yêu cầu ở các hình thức khác nhau trước đây, nhưng tôi đã kiểm tra tất cả các câu trả lời và tôi nghĩ rằng chúng tôi đã loại trừ tất cả.IntelliJ NoClassDefFoundError khi chạy IntelliJ kiểm tra

Lỗi:

java.lang.NoClassDefFoundError: com/lgc/infra/geometry/Coord1Val 
at com.lgc.infra.geometry.Coords.coord(Coords.java:89) 
at com.lgc.infra.geometry.Coords.<clinit>(Coords.java:24) 
at com.geoteric.lfd.eos.ReallyBasicTest.make_a_simple_coord(ReallyBasicTest.java:17) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
at org.junit.runners.Suite.runChild(Suite.java:128) 
at org.junit.runners.Suite.runChild(Suite.java:24) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
at org.junit.runner.JUnitCore.run(JUnitCore.java:157) 
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78) 
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212) 
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) 
Caused by: java.lang.ClassNotFoundException: com.lgc.infra.geometry.Coord1Val 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 37 more 

Code:

package com.geoteric.lfd.eos; 

import com.lgc.infra.geometry.Coord3; 
import com.lgc.infra.geometry.Coords; 
import org.junit.Test; 

import static org.hamcrest.CoreMatchers.equalTo; 
import static org.junit.Assert.assertThat; 

/** 
* Created by TClarke on 27/03/2015. 
*/ 
public class ReallyBasicTest { 
    @Test 
    public void make_a_simple_coord() 
    { 
     Coord3 c3 = Coords.coord(1.0f, 2.0f, 3.0f); 
     assertThat(c3.getX(), equalTo(1.0)); 
    } 
} 

Đường dẫn đến ClassFile:

D:\ffa_dev\link-for-decisionspace\ext\dssdk\com_lgc_dsp-core_sdk.jar!\com\lgc\infra\geometry\Coords.class 

Ảnh chụp màn hình của cấu trúc mô-đun:

Ảnh chụp màn hình của Test Runner Config:

Mã liên quan hoạt động tốt khi được xây dựng thành dự án thực. Vì vậy, bất kỳ lời khuyên về những gì tôi có thể đã bị mất?

Trả lời

0

Tôi nghĩ rằng .iml của bạn chưa được cập nhật. Bạn đã thử tạo lại tệp dự án/mô-đun .iml của mình chưa. Nếu dự án maven của nó bạn có thể tái tạo nó bằng lệnh

mvn idea:idea 

Sau .iml được cập nhật làm mới dự án và đang chạy thử nghiệm

1

này đã bỏ phiếu tán, vì vậy tôi sẽ cho bạn biết những gì chúng ta cuối cùng làm việc ra .

Chúng tôi đã viết một plugin bằng API cho một ứng dụng khác. Khi bạn triển khai plugin, nó sẽ truy cập vào tất cả các định nghĩa trong ứng dụng. Tuy nhiên, các thử nghiệm đơn vị đang chạy trong sự cô lập, do đó, các lớp cụ thể chỉ được xác định thông qua các giao diện và các nhà máy không thể được xây dựng.

Ví dụ này:

Coord3 c3 = Coords.coord(1.0f, 2.0f, 3.0f); 

Cả Coord3 và Coords được xác định. Nhưng com/lgc/infra/geometry/Coord1Val, được sử dụng trong Coords, không bao giờ thực sự được định nghĩa trong đường dẫn thư viện của chúng ta (jar API được xây dựng rõ ràng với nó ở đó, nhưng nó không được cung cấp).

Có nhiều cách giải quyết tiềm năng, hy vọng những người thông minh vấp ngã khi câu hỏi này sẽ bình luận với một số người trong số họ. Một trong những chúng tôi đã đi với là để bọc Coords trong một nhà máy chế giễu mà trả về mô hình (Coord3.class), để các bộ phận chứng minh vấn đề này được đóng gói đi.

Các vấn đề liên quan