2015-01-19 3 views
0

В настоящее время я пытаюсь реализовать некоторую физику в своем приложении, однако при компиляции я столкнулся с проблемой.Android Studio Jbox2D java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory

Ошибка компиляции:

01-18 18:38:49.165 32473-32473/com.example.anthonys.pennyhockey E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.example.anthonys.pennyhockey, PID: 32473 
java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory 
     at org.jbox2d.pooling.normal.MutableStack.<clinit>(MutableStack.java:35) 
     at org.jbox2d.pooling.normal.DefaultWorldPool.<init>(DefaultWorldPool.java:66) 
     at org.jbox2d.dynamics.World.<init>(World.java:122) 
     at com.example.anthonys.pennyhockey.Play.<init>(Play.java:52) 
     at java.lang.Class.newInstanceImpl(Native Method) 
     at java.lang.Class.newInstance(Class.java:1208) 
     at android.app.Instrumentation.newActivity(Instrumentation.java:1061) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2122) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271) 
     at android.app.ActivityThread.access$800(ActivityThread.java:144) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5146) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
     at dalvik.system.NativeStart.main(Native Method) 

мой код:

package com.example.anthonys.pennyhockey; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 

import org.jbox2d.collision.shapes.PolygonShape; 
import org.jbox2d.common.Vec2; 
import org.jbox2d.dynamics.Body; 
import org.jbox2d.dynamics.BodyDef; 
import org.jbox2d.dynamics.BodyType; 
import org.jbox2d.dynamics.FixtureDef; 
import org.jbox2d.dynamics.World; 


public class Play extends Activity { 


private void definition() 
{ 
    BodyDef penny = new BodyDef(); 
    penny.type = BodyType.DYNAMIC; 
    penny.position.set(0,20); 
    penny.angle = 0; 
    Body myObject = world.createBody(penny); 
    PolygonShape pennyShape = new PolygonShape(); 
    pennyShape.setAsBox(0.75f,0.75f); 

    FixtureDef pennyFixture = new FixtureDef(); 
    pennyFixture.shape = pennyShape; 
    pennyFixture.density = 1; 
    myObject.createFixture(pennyFixture); 

} 









@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_play); 
} 


World world = new World(new Vec2(0, -9.8f), false); 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.play, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

}

В основном я пытаюсь сделать 2D фигуру, которую можно перемещать вокруг. Я совершенно новичок в Jbox2d, поэтому, если у кого-то есть более простые физические движки, которые я мог бы использовать, я также был бы открыт для предложений!

У меня есть файл jbox2d-library-2.1.2.2.jar в папке с именем 'libs'. Я добавил следующее приложение build.gradle

dependencies { 
compile fileTree(include: ['*.jar'], dir: 'libs') 
compile files('libs/jbox2d-library-2.1.2.2.jar') 
} 

ответ

0

Я не знаю, о jbox2d, но то, что произошло то, что sl4j (который является протоколирование фасад) не может найти реализацию каротаж .

Возможно, все, что вам нужно сделать, это предоставить один из вас путь к классу, например. log4j

compile 'org.slf4j:slf4j-log4j12:1.6.4' 

(не уверен, что о точной версии, хотя)

BTW, jbox2d упоминает об этом в своем documentation ("не здание с мавена") :)

EDIT: любой причина, по которой вы не получаете зависимости от maven-репо? Кажется, гораздо проще просто получить его от here и позволить градле следить за зависимостями ...

'org.jbox2d:jbox2d:2.1.2.2' 
Смежные вопросы