Autore Topic: Istanziare Jetty in app ANDROID  (Letto 989 volte)

Offline magnus

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Iconia Tab A500
  • Sistema operativo:
    Windows 7
Istanziare Jetty in app ANDROID
« il: 22 Gennaio 2013, 11:05:04 CET »
0
Ciao a tutti,
avrei un'idea da realizzare e per svilupparla avrei bisogno di istanziare jetty in un app android.

In pratica vorrei adattare questo progetto: NotaSoftware.com  per farlo diventare un app android fruibile gratuitamente.

Ho tentato questo tutorial: Pure Geek Joy: running embedded Jetty in Android app

Ma la cosa sembra non funzionare. La compilazione va a buon fine ma ho un errore a runtime:

01-22 01:20:14.530: I/System.out(12111): Sending WAIT chunk
01-22 01:20:14.530: W/ActivityThread(12111): Application com.example.notamobile is waiting for the debugger on port 8100...
01-22 01:20:14.565: I/dalvikvm(12111): Debugger is active
01-22 01:20:14.735: I/System.out(12111): Debugger has connected
01-22 01:20:14.735: I/System.out(12111): waiting for debugger to settle...
01-22 01:20:14.930: I/System.out(12111): waiting for debugger to settle...
01-22 01:20:15.135: I/System.out(12111): waiting for debugger to settle...
01-22 01:20:15.335: I/System.out(12111): waiting for debugger to settle...
01-22 01:20:15.535: I/System.out(12111): waiting for debugger to settle...
01-22 01:20:15.740: I/System.out(12111): waiting for debugger to settle...
01-22 01:20:15.935: I/System.out(12111): waiting for debugger to settle...
01-22 01:20:16.135: I/System.out(12111): debugger has settled (1385)
01-22 01:20:16.245: E/dalvikvm(12111): Could not find class 'org.eclipse.jetty.server.Server', referenced from method com.example.notamobile.MainActivity.onCreate
01-22 01:20:16.245: W/dalvikvm(12111): VFY: unable to resolve new-instance 500 (Lorg/eclipse/jetty/server/Server;) in Lcom/example/notamobile/MainActivity;

01-22 01:20:16.250: D/dalvikvm(12111): VFY: replacing opcode 0x22 at 0x0008
01-22 01:20:16.250: D/dalvikvm(12111): VFY: dead code 0x000a-001c in Lcom/example/notamobile/MainActivity;.onCreate (Landroid/os/Bundle;)V
01-22 01:20:17.335: D/dalvikvm(12111): threadid=1: still suspended after undo (sc=1 dc=1)
01-22 01:20:24.850: D/dalvikvm(12111): GC_EXTERNAL_ALLOC freed 48K, 50% free 2712K/5379K, external 0K/0K, paused 72ms
01-22 01:21:09.970: D/AndroidRuntime(12111): Shutting down VM
01-22 01:21:09.970: W/dalvikvm(12111): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
01-22 01:21:10.020: E/AndroidRuntime(12111): FATAL EXCEPTION: main
01-22 01:21:10.020: E/AndroidRuntime(12111): java.lang.NoClassDefFoundError: org.eclipse.jetty.server.Server
01-22 01:21:10.020: E/AndroidRuntime(12111):    at com.example.notamobile.MainActivity.onCreate(MainActivity.java:33)
01-22 01:21:10.020: E/AndroidRuntime(12111):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-22 01:21:10.020: E/AndroidRuntime(12111):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
01-22 01:21:10.020: E/AndroidRuntime(12111):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
01-22 01:21:10.020: E/AndroidRuntime(12111):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-22 01:21:10.020: E/AndroidRuntime(12111):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
01-22 01:21:10.020: E/AndroidRuntime(12111):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-22 01:21:10.020: E/AndroidRuntime(12111):    at android.os.Looper.loop(Looper.java:130)
01-22 01:21:10.020: E/AndroidRuntime(12111):    at android.app.ActivityThread.main(ActivityThread.java:3691)
01-22 01:21:10.020: E/AndroidRuntime(12111):    at java.lang.reflect.Method.invokeNative(Native Method)
01-22 01:21:10.020: E/AndroidRuntime(12111):    at java.lang.reflect.Method.invoke(Method.java:507)
01-22 01:21:10.020: E/AndroidRuntime(12111):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
01-22 01:21:10.020: E/AndroidRuntime(12111):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
01-22 01:21:10.020: E/AndroidRuntime(12111):    at dalvik.system.NativeStart.main(Native Method)

A seguire il codice dell'activity:

package com.example.notamobile;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import android.os.Bundle;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AbstractHandler;

public class MainActivity extends Activity {   
      
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        Server webServer = new Server(8080);

        Handler handler = new AbstractHandler() {
            public void handle(String target, Request request, HttpServletRequest servletRequest,
                    HttpServletResponse servletResponse) throws IOException, ServletException {
                servletResponse.setContentType("text/html");
                servletResponse.setStatus(HttpServletResponse.SC_OK);
                servletResponse.getWriter().println("<h1>Hello World</h1>");
                ((Request) request).setHandled(true);
            }
        };
        webServer.setHandler(handler);

        try {
            webServer.start();
            //Log.d(LOG_TAG, "started Web server @ " + getPublicInetAddress());
           
            /*NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            Notification notification = new Notification( R.drawable.ic_launcher, "WebServer", System.currentTimeMillis());
            notification.flags |= Notification.FLAG_ONGOING_EVENT; // Notification.FLAG_NO_CLEAR;
            Intent notificationIntent = new Intent(this, MainActivity.class);
            PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
            notification.setLatestEventInfo(getApplicationContext(), "Web Server" , "Web Server Listening @ ", contentIntent);
            notificationManager.notify(NOTIFICATION_ID_WEB_SERVER, notification);*/
        }
        catch (Exception e) {
            //Log.d(LOG_TAG, "unexpected exception starting Web server: " + e);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

L'API che sto utilizzando è la 10.

Sapreste darmi una mano?  :-(

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Istanziare Jetty in app ANDROID
« Risposta #1 il: 22 Gennaio 2013, 11:21:33 CET »
0
I vari jar devi metterli nella cartella libs.

Offline magnus

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Iconia Tab A500
  • Sistema operativo:
    Windows 7
Re:Istanziare Jetty in app ANDROID
« Risposta #2 il: 22 Gennaio 2013, 11:40:44 CET »
0
Li ho legati con eclipse associandoli al progetto, infatti compila tutto correttamente.

Quindi è necessario piazzarli pure in libs del proprio progetto?

Non posso controllare da qui ( sono al lavoro ). Ma nel caso stasera verifico.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Istanziare Jetty in app ANDROID
« Risposta #3 il: 22 Gennaio 2013, 11:49:55 CET »
0
Non serve associarli al progetto (ovvero inserirli nel build path).
Devi solo metterli nella cartella libs ;)

Inoltre, credo che tutto quel codice dovrai inserirlo dentro un Service ;)

Offline magnus

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Iconia Tab A500
  • Sistema operativo:
    Windows 7
Re:Istanziare Jetty in app ANDROID
« Risposta #4 il: 22 Gennaio 2013, 13:13:09 CET »
0
Ok, grazie. Ti faccio sapere ;)