I przestrzegać samouczek wprowadzający ramy Play, ale daje mi błąd:
Execution exception VerifyError occured : Expecting a stack map frame in method controllers.Secure$Security.authentify(Ljava/lang/String;Ljava/lang/String;)Z at offset 33
Nie jestem pewien, co zrobiłem źle. Kod używam (fragmenty):
package controllers;
..
@With(Secure.class)
public class Application extends Controller
{
@Before
public static void setConnectedUser()
{
if (Security.isConnected())
{
User user = User.find("byEmail", Security.connected()).first();
user.password = null;
renderArgs.put("user", user);
}
}
...
Dla klasy zabezpieczeń:
package controllers;
import models.*;
public class Security extends Secure.Security {
static boolean authenticate(String username, String password) {
return User.connect(username, password) != null;
}
}
Dodałem też bezpieczny moduł dependencies.yml który ładuje poprawnie po ponownym uruchomieniu ramy Play. Dodałem bezpieczny model do moich tras. Eclipse nie daje błędów; błąd występuje tylko w czasie wykonywania. Klasa Secure.Security ma publicznie dostępną statyczną metodę isConnected. Używam najnowszej wersji do gry (1.2.2).
Widzę, że uwierzytelnienie jest @Deprecated w Play-source, ale nie wiesz, gdzie został wywołany, jeśli powoduje to wyjątek? –
freeone3000 @ irc.freenode.org # java zasugerował, że może to być związane z faktem, że używam JDK 1.7; coś z kodowaniem bajtowym i sprawdzaniem poprawności. Czy może być związane z 'invokedynamic'? –