Hola, yo de nuevo xD, estoy descompilando un proyecto pero me quedan unos errores que estan en varias clases, en la instruccion "ForEach" y no logro solucionarlo, aquí les dejo algunos fragmentos de código donde me marca error:

Código: Seleccionar todo

import net.launcher.versions.Library;
Collection libraries = version.getRelevantLibraries(os);
for (Library library : libraries) {
	Map nativesPerOs = library.getNatives();
	...
}

---------------------------------------------------------

import java.io.File;
Collection classPath = version.getClassPath(OperatingSystem.getCurrentPlatform(), this.launcher.getWorkingDirectory());
for (File file : classPath) {
	...
}

---------------------------------------------------------

import net.minecraft.launcher.events.AuthenticationChangedListener;
final List listeners = new ArrayList(this.listeners);
public void run() {
	for (AuthenticationChangedListener listener : listeners)
	listener.onAuthenticationChanged(BaseAuthenticationService.this);
}

---------------------------------------------------------

import net.minecraft.launcher.events.RefreshedProfilesListener;
final List listeners = new ArrayList(this.refreshedProfilesListeners);
public void run() {
	for (RefreshedProfilesListener listener : listeners)
	listener.onProfilesRefreshed(ProfileManager.this);
}

---------------------------------------------------------

import java.util.Map;
java.util.List statuses = (List)StatusPanelForm.this.gson.fromJson(Http.performGet(new URL("http://****.com/***"), StatusPanelForm.this.launcher.getProxy()), token.getType());
for (Map serverStatusInformation : statuses)
if (serverStatusInformation.containsKey("login.net"))

---------------------------------------------------------

import net.minecraft.launcher.profile.Profile;
Profile selected = null;
Collection profiles = this.launcher.getProfileManager().getProfiles().values();
for (Profile profile : profiles) {
	if (previous.equals(profile.getName())) {
	selected = profile;
	}
this.profileList.addItem(profile);
}
El error que me marca es:

Código: Seleccionar todo

incompatible types
     Required: File (este es segun el introducido en el For)
     found: Object
Al utilizar la "autocorrección" del NetBeans me cambia el File, o el "Profile" en el caso del ultimo fragmento de código por "Object" y obviamente esto me deja mas errores xD jaja

Ya se que al descompilar no me devulve el código exacto (lo digo porque todo el mundo me dice eso y es obvio, poreso lo estoy tratando de reconstruir y ya me falta poco :D)

Bueno espero que me puedan ayudar, gracias de antemano :D
Se que la version 7 de java permite no expecificar list y demas pero que poco me gusta...
A lo que vamos:
import java.io.File;
Collection classPath = version.getClassPath(OperatingSystem.getCurrentPlatform(), this.launcher.getWorkingDirectory());
for (File file : classPath) {
   ...
}
Seguro que classPath es un collection<File> ? porque no tiene pinta de serlo la verda!
En 1º en 2º o en 3º BETICO hasta que muera
Hola, gracias por responder, la verdad es que no estoy muy seguro, estoy descompilando este proyecto y aprendiendo a la vez xD jaja
Bueno, en el código que citaste y en varios otros (en los for que recorren colecciones), asignándole el nombre de la clase (en el caso del que citaste collection<File>) no marca el error y parece ser que funciona correctamente, pero ahora en el caso del que pongo aqui debajo, deja de marcar el error pero también deja de funcionar

Este es el código "inicial" donde se importa la clase "RefreshedVersionListener":

Código: Seleccionar todo

import net.minecraft.launcher.events.RefreshedVersionsListener;
Public class VersionManager{
     private final List<RefreshedVersionsListener> refreshedVersionsListeners = Collections.synchronizedList(new ArrayList());
     ...
}
Esta es la clase "RefreshedVersionListener":

Imagen


Y este es el fragmento de codigo que marca error:

Imagen


Si la primera linea la dejo así, deja de marcar el error pero a la vez deja de cumplir su función.

Código: Seleccionar todo

private final List<RefreshedVersionsListener> refreshedVersionsListeners = Collections.synchronizedList(new ArrayList());
La función de esta clase es cargar un ComboBox con los perfiles guardados

Si necesitan otra info, o quieren que les pase el archivo me dicen, gracias de antemano :D
Hay alguna CLASE que implemente a RefreshedVersionListener y que tenga ese mismo nombre??
¿Y si en vez de un forEach haces el for que esta arriba y no da fallo?
En 1º en 2º o en 3º BETICO hasta que muera
no, la primer imagen que puse es el contenido de la clase RefreshedVersionListener, lo que se ve en la imagen es todo el codigo que tiene, la segunda imagen es el fragmento del codigo que da el error, aca te dejo un link con el codigo completo [Enlace externo eliminado para invitados] (avisame si lo puedes ver) el error lo marca en el for de la linea 102.
davidad escribió:¿Y si en vez de un forEach haces el for que esta arriba y no da fallo?
No entendi, cual for?, el de la segunda imagen es el for que me da error, este error lo soluciono cambiando esta linea:

Código: Seleccionar todo

final List listeners = new ArrayList(this.refreshedVersionsListeners); (linea 88)
Por esta:

Código: Seleccionar todo

final List<RefreshedVersionsListener> listeners = new ArrayList(this.refreshedVersionsListeners);
Pero al hacer este cambio, la clase ya no cumple su funcion y no me carga el combobox.
Acabo de descubrir el error, lo que dejaba sin funcionar la clase no era el ForEach mencionado anteriormente sino un error en el sector del archivo VersionManager$2.class (no recuerdo el nombre), este archivo solo pesa 2KB y el codigo que le corresponde es el siguiente:

Imagen


Si se fijan me marca un error en "{" y puse la informacion del error un poco mas arriba para no tapar el codigo, ya me habia olvidado de este error ya que lo habia solucionado antes utilizando "Implement All Abstract Methods" pero ahora que me di cuenta que el error estaba en el archivo "VersionManager$2.class" y el codigo de este archivo se encuentra donde estaba ese error pense que probablemente usar esa opcion para solucionar el error fue lo que lo dejo inutilizable, por suerte tenia un backup :D. Sera este el error que impide que la clase funcione correctamente? usar el "Implement All Abstract Methods" puede que sea una solucion erronea? Perdon por tantos mensajes pero es que ya me falta poco jaja
Porque no me deja editar el mensaje ¬¬ ya lo resolvi y queria borrar el mensaje anterior porque no aporta nada y ensucia el post... :/ nose porque justo cuando publico mi duda logro resolverla :/ jaja bueno per todavia me quedan 4 errores xD
Ahora si que me trabe jaja, me quedaron solo 2 errores y me estan ganando jaja aver si me dan una mano, les dejo unas capturas de los dos errores:

Este es el primer error que tengo:
Imagen


Si le cambio el valor a la variable local "Version" (le agrego un 1) me queda así:

Imagen


El otro error que tengo es este:

Imagen


El error parece ser tonto pero no logro solucionarlo xD. Espero que me puedan ayudar con estos 2 errores que son los ultimos que quedan y ya los dejo de molestar :D jajaja
Responder

Volver a “Java”