¿Por qué mi aplicación hecha en React me da error 404 en todas las páginas salvo la principal?

Estoy intentando probar la versión de producción de una web que he hecho utilizando React, pero cuando ejecuto serve -s build y abro mi web, todas las páginas menos la principal me lanzan un error 404.

En el archivo Index.js envuelvo la llamada a App.js utilizando BrowserRouter:

  <BrowserRouter>     <App />   </BrowserRouter>, 

Y la navegación está definida en el archivo App.js utilizando react-router-dom. Se ve así:

          <Route exact path="/" component={Home} />           <Route path="/ilustraciones" component={Ilustraciones} />           <Route path="/galeria" component={Galeria} />           <Route path="/login" component={Login} />           <Route path="/visor" component={Loginvisor} />           <Route path="/visorstl" component={LoginvisorSTL} />           <Route path="/profile" component={Profile} />           <Route path="/DICOM" component={LoginVisorDICOM} /> 

Mi web, si es necesario mirar en otro lado, está aquí: https://github.com/rgomez96/Tecnolab (en la rama Develop)

¿Cómo puedo solucionar esto? No es mandatorio desplegar la web utilizando serve así que podría cambiarlo si fuera necesario.

Mi aplicacion me lanza un error NullPointerException

Mi aplicacion de marca un error pero no lo puedo encontrar,mi aplicacion contiene tabs y paginas web se supone que una pestaña me muestra una portada  y la siguiente me muestra las paginas web usando un spinner   Esto me dice mi logCat:   04-25 15:12:01.973: E/AndroidRuntime(1136): FATAL EXCEPTION: main 

04-25 15:12:01.973: E/AndroidRuntime(1136): Process: com.example.ecologia, PID: 1136 04-25 15:12:01.973: E/AndroidRuntime(1136): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ecologia/com.example.ecologia.MainActivity}: java.lang.NullPointerException 04-25 15:12:01.973: E/AndroidRuntime(1136): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 04-25 15:12:01.973: E/AndroidRuntime(1136): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 04-25 15:12:01.973: E/AndroidRuntime(1136): at android.app.ActivityThread.access$ 800(ActivityThread.java:135) 04-25 15:12:01.973: E/AndroidRuntime(1136): at android.app.ActivityThread$ H.handleMessage(ActivityThread.java:1196) 04-25 15:12:01.973: E/AndroidRuntime(1136): at android.os.Handler.dispatchMessage(Handler.java:102) 04-25 15:12:01.973: E/AndroidRuntime(1136): at android.os.Looper.loop(Looper.java:136) 04-25 15:12:01.973: E/AndroidRuntime(1136): at android.app.ActivityThread.main(ActivityThread.java:5017) 04-25 15:12:01.973: E/AndroidRuntime(1136): at java.lang.reflect.Method.invokeNative(Native Method) 04-25 15:12:01.973: E/AndroidRuntime(1136): at java.lang.reflect.Method.invoke(Method.java:515) 04-25 15:12:01.973: E/AndroidRuntime(1136): at com.android.internal.os.ZygoteInit$ MethodAndArgsCaller.run(ZygoteInit.java:779) 04-25 15:12:01.973: E/AndroidRuntime(1136): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 04-25 15:12:01.973: E/AndroidRuntime(1136): at dalvik.system.NativeStart.main(Native Method) 04-25 15:12:01.973: E/AndroidRuntime(1136): Caused by: java.lang.NullPointerException 04-25 15:12:01.973: E/AndroidRuntime(1136): at com.example.ecologia.MainActivity.onCreate(MainActivity.java:57) 04-25 15:12:01.973: E/AndroidRuntime(1136): at android.app.Activity.performCreate(Activity.java:5231) 04-25 15:12:01.973: E/AndroidRuntime(1136): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 04-25 15:12:01.973: E/AndroidRuntime(1136): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 04-25 15:12:01.973: E/AndroidRuntime(1136): … 11 more

aqui dejo algo del codigo            activity main:     <RelativeLayout          xmlns:android="http://schemas.android.com/apk/res/android"         xmlns:tools="http://schemas.android.com/tools"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:paddingBottom="@dimen/activity_vertical_margin"         android:paddingLeft="@dimen/activity_horizontal_margin"         android:paddingRight="@dimen/activity_horizontal_margin"         android:paddingTop="@dimen/activity_vertical_margin"         tools:context="com.example.ecologia.MainActivity" >             <TabHost             android:id="@android:id/tabhost"             android:layout_width="match_parent"             android:layout_height="match_parent"             android:layout_alignParentLeft="true"             android:layout_alignParentTop="true" >               <LinearLayout                 android:layout_width="match_parent"                 android:layout_height="match_parent"                 android:orientation="vertical" >                  <TabWidget                     android:id="@android:id/tabs"                     android:layout_width="match_parent"                     android:layout_height="wrap_content" >                 </TabWidget>                  <FrameLayout                     android:id="@android:id/tabcontent"                     android:layout_width="match_parent"                     android:layout_height="match_parent" >                      <LinearLayout                         android:id="@+id/Inicio"                         android:layout_width="match_parent"                         android:layout_height="match_parent"                         android:orientation="vertical"                           >                          <ImageView                             android:id="@+id/imageView1"                             android:layout_width="wrap_content"                             android:layout_height="wrap_content"                             android:src="@drawable/portada" />                      </LinearLayout>                      <LinearLayout                         android:id="@+id/Ecosistemas"                         android:orientation="vertical"                         android:layout_width="match_parent"                         android:layout_height="match_parent"                         >                      </LinearLayout>                      <LinearLayout                         android:id="@+id/Desarrollo"                         android:orientation="vertical"                         android:layout_width="match_parent"                         android:layout_height="match_parent"                           >                     </LinearLayout>                 </FrameLayout>             </LinearLayout>         </TabHost>      </RelativeLayout>    Main Activity: package com.example.ecologia;     import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.webkit.WebView;     import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TabHost; import android.widget.AdapterView.OnItemSelectedListener;     public class MainActivity extends Activity implements OnItemSelectedListener {      public TabHost tabs;     public Spinner SpinTipo,SpinEco;      public WebView webEcosistemas;          public ArrayAdapter<CharSequence>adaTipoEcosistema;       public ArrayAdapter<CharSequence> adaTerrestre;       public ArrayAdapter<CharSequence> adaAcuatico;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          SpinTipo = (Spinner)findViewById(R.id.SpinTipo);         SpinEco = (Spinner)findViewById(R.id.SpinEco);         webEcosistemas = (WebView)findViewById(R.id.webEcosistemas);           adaTipoEcosistema= ArrayAdapter.createFromResource(this,               R.array.Ecosistema,               android.R.layout.simple_spinner_item);         adaTerrestre = ArrayAdapter.createFromResource(this,                   R.array.Terrestre,                   android.R.layout.simple_spinner_item);         adaAcuatico  =  ArrayAdapter.createFromResource(this,                   R.array.Acuatico,                   android.R.layout.simple_spinner_item);    adaTipoEcosistema.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);   adaTerrestre.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);   adaAcuatico.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);    SpinTipo.setAdapter(adaTerrestre);   SpinEco.setAdapter(adaAcuatico);    SpinTipo.setOnItemSelectedListener(this);   SpinEco.setOnItemSelectedListener(this);    webEcosistemas.loadUrl("file:///android_assets/desierto.html");    tabs = (TabHost)findViewById(android.R.id.tabhost);         tabs.setup();    TabHost.TabSpec spec;     spec = tabs.newTabSpec("Inicio");    spec.setIndicator("",getResources().getDrawable(R.drawable.inicio));   spec.setIndicator(getString(R.string.tabInicio));   spec.setContent(R.id.Inicio);   tabs.addTab(spec);    spec = tabs.newTabSpec("Ecosistemas");    spec .setIndicator("",getResources().getDrawable(R.drawable.ecosistema));   spec.setIndicator(getString(R.string.tabEcosistema));   spec .setContent(R.id.Ecosistemas);   tabs.addTab(spec);    spec = tabs.newTabSpec("Desarrollo Sustentable");    spec .setIndicator("",getResources().getDrawable(R.drawable.desarrollo));   spec.setIndicator(getString(R.string.tabDesarrollo));   spec .setContent(R.id.Desarrollo);   tabs.addTab(spec);    tabs.setCurrentTab(0); }        @Override     public boolean onCreateOptionsMenu(Menu menu) {         // Inflate the menu; this adds items to the action bar if it is present.         getMenuInflater().inflate(R.menu.main, menu);         return true;     }      @Override     public boolean onOptionsItemSelected(MenuItem item) {         switch (item.getItemId()) {         case R.id.action_settings:             finish();             break;         }         return true;       }      @Override     public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,             long arg3)  {         // TODO Auto-generated method stub         if (arg0.getId()==R.id.SpinTipo){             switch(SpinTipo.getSelectedItemPosition()){             case 0:                    SpinTipo.setAdapter(adaTerrestre);                    webEcosistemas.loadUrl("file:///android_asset/desierto.html");                     break;             case 1:                    SpinTipo.setAdapter(adaAcuatico);                    webEcosistemas.loadUrl("file:///android_asset/oceano.html");                     break;             }           }               if (arg0.getId()==R.id.SpinEco){                 switch(SpinTipo.getSelectedItemPosition()){                 case 0:                     switch(SpinEco.getSelectedItemPosition()){                     case 0:                         webEcosistemas.loadUrl("file:///android_asset/tundra.html");                          break;                     case 1:                         webEcosistemas.loadUrl("file:///android_asset/taiga.html");                          break;                     case 2:                         webEcosistemas.loadUrl("file:///android_asset/bosque.html");                          break;                     case 3:                         webEcosistemas.loadUrl("file:///android_asset/selva.html");                          break;                      case 4:                         webEcosistemas.loadUrl("file:///android_asset/desierto.html");                          break;                      }                     break;                 case 1:                     switch (SpinEco.getSelectedItemPosition()){                     case 0:                         webEcosistemas.loadUrl("file:///android_asset/oceano.html");                          break;                     case 1:                         webEcosistemas.loadUrl("file:///android_asset/rio.html");                       }                     break;                 }               }     }      @Override     public void onNothingSelected(AdapterView<?> arg0) {         // TODO Auto-generated method stub      } }   contenido1: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical" >      <TableLayout         android:layout_width="match_parent"         android:layout_height="wrap_content" >          <TableRow             android:id="@+id/tableRow1"             android:layout_width="wrap_content"             android:layout_height="wrap_content" >              <TextView                 android:id="@+id/textView1"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:text="@string/TEcosistemas" />              <Spinner                 android:id="@+id/SpinTipo"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content" />          </TableRow>          <TableRow             android:id="@+id/tableRow2"             android:layout_width="wrap_content"             android:layout_height="wrap_content" >              <TextView                 android:id="@+id/textView2"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:text="@string/Ecosistemas" />              <Spinner                 android:id="@+id/SpinEco"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content" />          </TableRow>     </TableLayout>      <WebView         android:id="@+id/webEcosistemas"         android:layout_width="match_parent"         android:layout_height="match_parent" />  </LinearLayout> 

Eliminar cookies en aplicacion vb.net que utiliza RestSharp

estoy desarrollando una integración con Shopify en vb.NET usando la libreria RestSharp y estoy teniendo problemas con el método POST, tras indagar en los foros de Shopify parece ser que la API tiene bloqueadas las cookies. Los Method.GET y Method.PUT si funcionan correctamente. Mi pregunta es, ¿como puedo eliminar las cookies de la petición? También si alguno habéis tenido este problema y lo solucionasteis de otra manera me sería muy útil que lo compartierais.

Gracias de antemano y Saludos

Aplicación Web Eclipse patrón MVC

Últimamente he estado en otros lenguajes y entornos y se me ha olvidado un poquito como crear una aplicación web, estoy usando eclipse, con un patrón mvc, tengo realizado ya el modelo, el controller, los dao, el singleton, y en WebContent tengo ya los html de login, registro… con sus jsp. El proyecto que quiero realizar es una tienda web donde poder comprar productos (da igual cuales sean). Tengo ya la interfaz de login con el formulario para meter usuario y contraseña, pero aparte de que no me salta si es correcto o se me ha olvidado como realizar otras interfaces después de ese login que es donde te lleve.

<!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Login de LGS</title>  <script type="text/javascript" lang="JavaScript">  //Confirmar que los datos que introduces en el login son correctos, sino te salta un mensaje y te devuelve al parámetro incorrecto.  function validarDatos() {     var usuario = document.getElementById('usuario');     var contraseña = document.getElementById('password');      if(usuario.value == "" || usuario.value == '' || usuario.value == null) {         alert.("Ingresa un usuario correcto");         return false;      } else if(password.value == "" || password.value == '' || password.value == null) {         alert.("Ingresa una contraseña correcta");         return false;      } else if((usuario.value == "" || usuario.value == '' || usuario.value == null)         (password.value == "" || password.value == '' || password.value == null)) {         alert.("Ingresa un usuario y una contraseña correctos");         return false;      } else {         return true;     } } </script>  </head>  <style> body {     background-color: lightgreen;     text-align: center; }  h1 {     color: green;     font-size: 40px;     font-style: italic;     font-weight: bold;   }  p {     color: green;     font-family: fantasy;     font-style: italic;     font-size: 40px;     font-weight: bold; }  </style>  <body onload="cargar()">  <h1>LegaGrow Shop</h1> <p>Login de LGS</p>  <form action="login.html" method="POST"     onsubmit="validarDatos()">     <table align="center" style="size: 50px;">          <tr>             <td colspan="2"                 style="font-weight: bold; font-style: italic; size: 42px; color: purple;">Ingresa                 tu Usuario y Contraseña</td>         </tr>          <tr>             <td style="size: 24px; color: green;" align="right">Usuario:</td>             <td><input type="text" name="usuario" id="usuario"></td>         </tr>          <tr>             <td style="size: 24px; color: green;" align="right">Contraseña:</td>             <td><input type="password" name="password" id="password"></td>         </tr>          <tr>             <td align="center"><input type="button" value="Cancelar"                 style="color: green; border-color: purple; font-size: 14px;"></td>             <td align="right"><input type="submit" value="Aceptar"                 style="color: green; border-color: purple; font-size: 14px;"></td>         </tr>      </table> </form> 

¿Cómo crear una aplicación con python que pueda ser migrada?

A lo que me refiero es: Quiero hacer una aplicación con python que pueda ser ejecutada en diferentes computadoras sin necesidad de instalar todas las librerías y la versión de python que utilicé a la hora de desarrollar la aplicación. Algo así como un .exe de C# pero en python y para distribuciones de linux.

Estoy desarrollando en windows 10 para una virtualbox con LinuxLite 3.8 de 32Bits, he utilizado Pyinstaller (con atributo -F) para procesar un “hola mundo” desde la virtualbox y me generó un archivo de tipo “ejecutable” pero no hace nada cuando lo intento abrir.

¿Porqué mi aplicación de Windows 64 mapea bibliotecas kernel32, gdi32, win32u, etc.?

Estuve explorando e intentando aprender un poco sobre la arquitectura y los detalles de bajo nivel de Windows x64. Para ver un poco cómo se organiza el espacio de memoria de los procesos compilé una aplicación básica y la cargué en el debugger. Curiosamente, en el espacio de memoria están mapeadas las bibliotecas kernel32.dll, gdi32.dll, user32.dll, gdi32full.dll y win32u.dll. No tengo motivo para asumir que porque tienen 32 en el nombre están de alguna forma atadas a 32 bits, aunque me resultó llamativo. ¿Alguien sabe si es solo una cuestión de nomenclatura o si realmente hay algo más profundo?

Gracias.

Auto iniciar aplicacion Android Nougat y Oreo BOOT_COMPLETE

Tengo un problema al utilizar un receiver que se lanze con la accion boot_complete

<receiver android:name=".BootCompletedReceiver" android:exported="true" android:enabled="true"         android:directBootAware="true"         android:permission="android.permission.RECEIVE_BOOT_COMPLETED">         <intent-filter>             <action android:name="android.intent.action.BOOT_COMPLETED" />             <category android:name="android.intent.category.DEFAULT"/>         </intent-filter>                 </receiver> 

Con su respectivo permiso

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

el receiver ni siquiera filtra la accion que esta lanzando ya que solo lo uso para comprobar que funcione pero no lo hace.

En nougat pude ir a Apps>My Application>Batery y ahi existe la opcion Auto launch introducir la descripción de la imagen aquí que al habilitarla la aplicacion ya puede iniciar con el sistema pero en Oreo no existe esta opcion, ademas como es que esta opcion se puede habilitar desde codigo?

Gracias

¿Cómo evitar que los datos se descarguen cada vez que ingreso a la aplicación?

me encuentro ya finalizando el desarrollo de una aplicación Android y me encontré con dos problemas.

P1: los datos los descargo cuando aparece el splashscreen y almaceno en una BD, por ende, la próxima vez que se ingrese, no deberían de descargarse otra vez. (para esto ya había pensado usar muchos if o un switch, pero no me parece la mejor solución. isFirstTimeLaunch() ya lo estoy usando al momento de usar la pantalla de bienvenida por primera vez, pero podría ser una solución).

EJ:

Calendar c = Calendar.getInstance(); int timeOfDay = c.get(Calendar.DATE);  if (timeOfDay == 18) {    loadURL();    loadURL2();    loadURL3(); } 

P2: los datos el algún momento deberán ser actualizados, y si se descargan solo una vez, ¿cómo los actualizo luego? (había pensado en un archivo JSON para esto, pero no sé cómo).