OpenPojo / openpojo

POJO Testing & Identity Management Made Trivial
http://openpojo.com
Apache License 2.0
156 stars 40 forks source link

Failing to generate sun.security.krb5.Credentials #84

Closed oshoukry closed 7 years ago

oshoukry commented 8 years ago

When attempting to generate a randome Credentials instance, The following Exception is thrown:

com.openpojo.reflection.exception.ReflectionException: Failed to create instance for class [com.openpojo.reflection.impl.PojoClassImpl [clazz=class sun.security.krb5.Credentials, pojoFields=[PojoFieldImpl [field=sun.security.krb5.internal.Ticket sun.security.krb5.Credentials.ticket, fieldGetter=PojoMethodImpl [method=getTicket args=[] return=class sun.security.krb5.internal.Ticket], fieldSetter=null], PojoFieldImpl [field=sun.security.krb5.PrincipalName sun.security.krb5.Credentials.client, fieldGetter=PojoMethodImpl [method=getClient args=[] return=class sun.security.krb5.PrincipalName], fieldSetter=null], PojoFieldImpl [field=sun.security.krb5.PrincipalName sun.security.krb5.Credentials.server, fieldGetter=PojoMethodImpl [method=getServer args=[] return=class sun.security.krb5.PrincipalName], fieldSetter=null], PojoFieldImpl [field=sun.security.krb5.EncryptionKey sun.security.krb5.Credentials.key, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=sun.security.krb5.internal.TicketFlags sun.security.krb5.Credentials.flags, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=sun.security.krb5.internal.KerberosTime sun.security.krb5.Credentials.authTime, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=sun.security.krb5.internal.KerberosTime sun.security.krb5.Credentials.startTime, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=sun.security.krb5.internal.KerberosTime sun.security.krb5.Credentials.endTime, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=sun.security.krb5.internal.KerberosTime sun.security.krb5.Credentials.renewTill, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=sun.security.krb5.internal.HostAddresses sun.security.krb5.Credentials.cAddr, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=sun.security.krb5.EncryptionKey sun.security.krb5.Credentials.serviceKey, fieldGetter=PojoMethodImpl [method=getServiceKey args=[] return=class sun.security.krb5.EncryptionKey], fieldSetter=null], PojoFieldImpl [field=sun.security.krb5.internal.AuthorizationData sun.security.krb5.Credentials.authzData, fieldGetter=PojoMethodImpl [method=getAuthzData args=[] return=class sun.security.krb5.internal.AuthorizationData], fieldSetter=null], PojoFieldImpl [field=private static boolean sun.security.krb5.Credentials.DEBUG, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=private static sun.security.krb5.internal.ccache.CredentialsCache sun.security.krb5.Credentials.cache, fieldGetter=PojoMethodImpl [method=getCache args=[] return=class sun.security.krb5.internal.ccache.CredentialsCache], fieldSetter=null], PojoFieldImpl [field=static boolean sun.security.krb5.Credentials.alreadyLoaded, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=private static boolean sun.security.krb5.Credentials.alreadyTried, fieldGetter=null, fieldSetter=null]], pojoMethods=[PojoMethodImpl [constructor=sun.security.krb5.Credentials args=[class sun.security.krb5.internal.Ticket, class sun.security.krb5.PrincipalName, class sun.security.krb5.PrincipalName, class sun.security.krb5.EncryptionKey, class sun.security.krb5.internal.TicketFlags, class sun.security.krb5.internal.KerberosTime, class sun.security.krb5.internal.KerberosTime, class sun.security.krb5.internal.KerberosTime, class sun.security.krb5.internal.KerberosTime, class sun.security.krb5.internal.HostAddresses] return=class sun.security.krb5.Credentials], PojoMethodImpl [constructor=sun.security.krb5.Credentials args=[class sun.security.krb5.internal.Ticket, class sun.security.krb5.PrincipalName, class sun.security.krb5.PrincipalName, class sun.security.krb5.EncryptionKey, class sun.security.krb5.internal.TicketFlags, class sun.security.krb5.internal.KerberosTime, class sun.security.krb5.internal.KerberosTime, class sun.security.krb5.internal.KerberosTime, class sun.security.krb5.internal.KerberosTime, class sun.security.krb5.internal.HostAddresses, class sun.security.krb5.internal.AuthorizationData] return=class sun.security.krb5.Credentials], PojoMethodImpl [constructor=sun.security.krb5.Credentials args=[class [B, class java.lang.String, class java.lang.String, class [B, int, class [Z, class java.util.Date, class java.util.Date, class java.util.Date, class java.util.Date, class [Ljava.net.InetAddress;] return=class sun.security.krb5.Credentials], PojoMethodImpl [method=toString args=[] return=class java.lang.String], PojoMethodImpl [method=getEncoded args=[] return=class [B], PojoMethodImpl [method=getCache args=[] return=class sun.security.krb5.internal.ccache.CredentialsCache], PojoMethodImpl [method=printDebug args=[class sun.security.krb5.Credentials] return=void], PojoMethodImpl [method=acquireDefaultNativeCreds args=[class [I] return=class sun.security.krb5.Credentials], PojoMethodImpl [method=getClient args=[] return=class sun.security.krb5.PrincipalName], PojoMethodImpl [method=getServer args=[] return=class sun.security.krb5.PrincipalName], PojoMethodImpl [method=getSessionKey args=[] return=class sun.security.krb5.EncryptionKey], PojoMethodImpl [method=getAuthTime args=[] return=class java.util.Date], PojoMethodImpl [method=getStartTime args=[] return=class java.util.Date], PojoMethodImpl [method=getEndTime args=[] return=class java.util.Date], PojoMethodImpl [method=getRenewTill args=[] return=class java.util.Date], PojoMethodImpl [method=getFlags args=[] return=class [Z], PojoMethodImpl [method=getClientAddresses args=[] return=class [Ljava.net.InetAddress;], PojoMethodImpl [method=isForwardable args=[] return=boolean], PojoMethodImpl [method=isRenewable args=[] return=boolean], PojoMethodImpl [method=getTicket args=[] return=class sun.security.krb5.internal.Ticket], PojoMethodImpl [method=getTicketFlags args=[] return=class sun.security.krb5.internal.TicketFlags], PojoMethodImpl [method=getAuthzData args=[] return=class sun.security.krb5.internal.AuthorizationData], PojoMethodImpl [method=checkDelegate args=[] return=boolean], PojoMethodImpl [method=resetDelegate args=[] return=void], PojoMethodImpl [method=renew args=[] return=class sun.security.krb5.Credentials], PojoMethodImpl [method=acquireTGTFromCache args=[class sun.security.krb5.PrincipalName, class java.lang.String] return=class sun.security.krb5.Credentials], PojoMethodImpl [method=acquireDefaultCreds args=[] return=class sun.security.krb5.Credentials], PojoMethodImpl [method=acquireServiceCreds args=[class java.lang.String, class sun.security.krb5.Credentials] return=class sun.security.krb5.Credentials], PojoMethodImpl [method=acquireS4U2selfCreds args=[class sun.security.krb5.PrincipalName, class sun.security.krb5.Credentials] return=class sun.security.krb5.Credentials], PojoMethodImpl [method=acquireS4U2proxyCreds args=[class java.lang.String, class sun.security.krb5.internal.Ticket, class sun.security.krb5.PrincipalName, class sun.security.krb5.Credentials] return=class sun.security.krb5.Credentials], PojoMethodImpl [method=getServiceKey args=[] return=class sun.security.krb5.EncryptionKey], PojoMethodImpl [method=ensureLoaded args=[] return=void]]]] using constructor [PojoMethodImpl [constructor=sun.security.krb5.Credentials args=[class sun.security.krb5.internal.Ticket, class sun.security.krb5.PrincipalName, class sun.security.krb5.PrincipalName, class sun.security.krb5.EncryptionKey, class sun.security.krb5.internal.TicketFlags, class sun.security.krb5.internal.KerberosTime, class sun.security.krb5.internal.KerberosTime, class sun.security.krb5.internal.KerberosTime, class sun.security.krb5.internal.KerberosTime, class sun.security.krb5.internal.HostAddresses] return=class sun.security.krb5.Credentials]]
    at com.openpojo.reflection.exception.ReflectionException.getInstance(ReflectionException.java:51)
    at com.openpojo.reflection.construct.InstanceFactory.createInstance(InstanceFactory.java:203)
    at com.openpojo.reflection.construct.InstanceFactory.getLeastCompleteInstance(InstanceFactory.java:141)
    at com.openpojo.random.impl.DefaultRandomGenerator.doGenerate(DefaultRandomGenerator.java:63)
    at com.openpojo.random.RandomFactory.getRandomValue(RandomFactory.java:99)
        [...]
Caused by: com.openpojo.reflection.exception.ReflectionException: Failed to create instance for class [com.openpojo.reflection.impl.PojoClassImpl [clazz=class sun.security.krb5.PrincipalName, pojoFields=[PojoFieldImpl [field=public static final int sun.security.krb5.PrincipalName.KRB_NT_UNKNOWN, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=public static final int sun.security.krb5.PrincipalName.KRB_NT_PRINCIPAL, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=public static final int sun.security.krb5.PrincipalName.KRB_NT_SRV_INST, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=public static final int sun.security.krb5.PrincipalName.KRB_NT_SRV_HST, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=public static final int sun.security.krb5.PrincipalName.KRB_NT_SRV_XHST, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=public static final int sun.security.krb5.PrincipalName.KRB_NT_UID, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=public static final java.lang.String sun.security.krb5.PrincipalName.TGS_DEFAULT_SRV_NAME, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=public static final int sun.security.krb5.PrincipalName.TGS_DEFAULT_NT, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=public static final char sun.security.krb5.PrincipalName.NAME_COMPONENT_SEPARATOR, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=public static final char sun.security.krb5.PrincipalName.NAME_REALM_SEPARATOR, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=public static final char sun.security.krb5.PrincipalName.REALM_COMPONENT_SEPARATOR, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=public static final java.lang.String sun.security.krb5.PrincipalName.NAME_COMPONENT_SEPARATOR_STR, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=public static final java.lang.String sun.security.krb5.PrincipalName.NAME_REALM_SEPARATOR_STR, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=public static final java.lang.String sun.security.krb5.PrincipalName.REALM_COMPONENT_SEPARATOR_STR, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=private final int sun.security.krb5.PrincipalName.nameType, fieldGetter=PojoMethodImpl [method=getNameType args=[] return=int], fieldSetter=null], PojoFieldImpl [field=private final java.lang.String[] sun.security.krb5.PrincipalName.nameStrings, fieldGetter=PojoMethodImpl [method=getNameStrings args=[] return=class [Ljava.lang.String;], fieldSetter=null], PojoFieldImpl [field=private final sun.security.krb5.Realm sun.security.krb5.PrincipalName.nameRealm, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=private final boolean sun.security.krb5.PrincipalName.realmDeduced, fieldGetter=PojoMethodImpl [method=isRealmDeduced args=[] return=boolean], fieldSetter=null], PojoFieldImpl [field=private transient java.lang.String sun.security.krb5.PrincipalName.salt, fieldGetter=PojoMethodImpl [method=getSalt args=[] return=class java.lang.String], fieldSetter=null], PojoFieldImpl [field=private static final long sun.security.krb5.PrincipalName.NAME_STRINGS_OFFSET, fieldGetter=null, fieldSetter=null], PojoFieldImpl [field=private static final sun.misc.Unsafe sun.security.krb5.PrincipalName.UNSAFE, fieldGetter=null, fieldSetter=null]], pojoMethods=[PojoMethodImpl [constructor=sun.security.krb5.PrincipalName args=[class java.lang.String] return=class sun.security.krb5.PrincipalName], PojoMethodImpl [constructor=sun.security.krb5.PrincipalName args=[class sun.security.util.DerValue, class sun.security.krb5.Realm] return=class sun.security.krb5.PrincipalName], PojoMethodImpl [constructor=sun.security.krb5.PrincipalName args=[class java.lang.String, int] return=class sun.security.krb5.PrincipalName], PojoMethodImpl [constructor=sun.security.krb5.PrincipalName args=[class java.lang.String, int, class java.lang.String] return=class sun.security.krb5.PrincipalName], PojoMethodImpl [constructor=sun.security.krb5.PrincipalName args=[int, class [Ljava.lang.String;, class sun.security.krb5.Realm] return=class sun.security.krb5.PrincipalName], PojoMethodImpl [constructor=sun.security.krb5.PrincipalName args=[class [Ljava.lang.String;, class java.lang.String] return=class sun.security.krb5.PrincipalName], PojoMethodImpl [constructor=sun.security.krb5.PrincipalName args=[class java.lang.String, class java.lang.String] return=class sun.security.krb5.PrincipalName], PojoMethodImpl [method=equals args=[class java.lang.Object] return=boolean], PojoMethodImpl [method=toString args=[] return=class java.lang.String], PojoMethodImpl [method=hashCode args=[] return=int], PojoMethodImpl [method=clone args=[] return=class java.lang.Object], PojoMethodImpl [method=getName args=[] return=class java.lang.String], PojoMethodImpl [method=parseName args=[class java.lang.String] return=class [Ljava.lang.String;], PojoMethodImpl [method=parse args=[class sun.security.util.DerInputStream, byte, boolean, class sun.security.krb5.Realm] return=class sun.security.krb5.PrincipalName], PojoMethodImpl [method=match args=[class sun.security.krb5.PrincipalName] return=boolean], PojoMethodImpl [method=toByteArray args=[] return=class [[B], PojoMethodImpl [method=getRealm args=[] return=class sun.security.krb5.Realm], PojoMethodImpl [method=validateNameStrings args=[class [Ljava.lang.String;] return=void], PojoMethodImpl [method=tgsService args=[class java.lang.String, class java.lang.String] return=class sun.security.krb5.PrincipalName], PojoMethodImpl [method=getRealmAsString args=[] return=class java.lang.String], PojoMethodImpl [method=getPrincipalNameAsString args=[] return=class java.lang.String], PojoMethodImpl [method=getNameType args=[] return=int], PojoMethodImpl [method=getNameStrings args=[] return=class [Ljava.lang.String;], PojoMethodImpl [method=getRealmString args=[] return=class java.lang.String], PojoMethodImpl [method=getSalt args=[] return=class java.lang.String], PojoMethodImpl [method=writePrincipal args=[class sun.security.krb5.internal.ccache.CCacheOutputStream] return=void], PojoMethodImpl [method=getInstanceComponent args=[] return=class java.lang.String], PojoMethodImpl [method=mapHostToRealm args=[class java.lang.String] return=class java.lang.String], PojoMethodImpl [method=isRealmDeduced args=[] return=boolean], PojoMethodImpl [method=asn1Encode args=[] return=class [B], PojoMethodImpl [method=getNameString args=[] return=class java.lang.String]]]] using constructor [PojoMethodImpl [constructor=sun.security.krb5.PrincipalName args=[class java.lang.String] return=class sun.security.krb5.PrincipalName]]
    at com.openpojo.reflection.exception.ReflectionException.getInstance(ReflectionException.java:51)
    at com.openpojo.reflection.construct.InstanceFactory.createInstance(InstanceFactory.java:203)
    at com.openpojo.reflection.construct.InstanceFactory.getLeastCompleteInstance(InstanceFactory.java:141)
    at com.openpojo.random.impl.DefaultRandomGenerator.doGenerate(DefaultRandomGenerator.java:63)
    at com.openpojo.random.RandomFactory.getRandomValue(RandomFactory.java:99)
    at com.openpojo.random.RandomFactory.getRandomValue(RandomFactory.java:107)
    at com.openpojo.reflection.construct.InstanceFactory.createInstance(InstanceFactory.java:198)
    ... 31 more
Caused by: com.openpojo.reflection.exception.ReflectionException
    at com.openpojo.reflection.exception.ReflectionException.getInstance(ReflectionException.java:51)
    at com.openpojo.reflection.impl.PojoMethodImpl.invoke(PojoMethodImpl.java:86)
    at com.openpojo.reflection.construct.InstanceFactory.doGetInstance(InstanceFactory.java:95)
    at com.openpojo.reflection.construct.InstanceFactory.getInstance(InstanceFactory.java:80)
    at com.openpojo.reflection.construct.InstanceFactory.createInstance(InstanceFactory.java:201)
    ... 36 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at com.openpojo.reflection.impl.PojoMethodImpl.invoke(PojoMethodImpl.java:78)
    ... 39 more
Caused by: KrbException: KrbException: Cannot locate default realm
    at sun.security.krb5.Realm.getDefault(Realm.java:68)
    at sun.security.krb5.PrincipalName.<init>(PrincipalName.java:459)
    at sun.security.krb5.PrincipalName.<init>(PrincipalName.java:468)
    at sun.security.krb5.PrincipalName.<init>(PrincipalName.java:472)
    ... 44 more
Caused by: KrbException: Cannot locate default realm
    at sun.security.krb5.Config.getDefaultRealm(Config.java:1029)
    at sun.security.krb5.Realm.getDefault(Realm.java:64)
    ... 47 more
oshoukry commented 7 years ago

Fix released in release 0.8.5

radboudp commented 6 years ago

This is still a problem. How can I fix it?

boonware commented 5 years ago

Bump. This is still a problem in the latest release.

benedikt-mue commented 2 years ago

any solution for this?