Class component of cap file
My class.cap structure is 06 00 0C 00 80 03 .....
tag and size values are understood from the above format.. I am not using any remote classes in my code. How to interpret the 00 80 values. Do they provide
the interfaces[] or classes[] structure. Please help me out in understanding class.cap
Well, I tried different ways and nothing can reach my expectation :| --> I almost harbour the idea that there's no SuperMethodref for external class as well
However, things written in spec seems to be subtle to me. Let me quote it for you (JC 2.2.1, chap 6.7.2)
The class referenced in the CONSTANT_SuperMethodref_info structure must be the class that defines the method that contains the Java language-level super invocation.
The token item of the CONSTANT_SuperMethodref_info structure represents the virtual method token (Section 4.3.7.6, “Virtual Methods” on page 4-9) of the referenced method. Unlike in the CONSTANT_VirtualMethodref_info structure, the virtual method token is defined within the scope of the hierarchy of the superclass of the class indicated by the class item. If the referenced method is public or protected the high bit of the token item is zero. If the referenced method is package-visible the high bit of the token item is one. In the latter case the class item must represent a reference to a class defined in this package and at least one superclass of the class that contains a definition of the virtual method must also be defined in this package.
Perhaps I'm not good at English (I'm not a native speaker), but would you mind to bold the line which tells us about the absence of SuperMethodref for external class in the whole definition above
Similar Messages
-
How do I convert Wallet.class to a CAP file?
I was trying to convert one of the sample files( Wallet.class) to a CAP file but it didn't work.
Please help!!!Please be more specific. Describe what you did in detail, provide outputs of your actions etc. Otherwise noone can help you.
Somebody save the world.. -
CONSTANT_SuperMethodref in CAP file
Hi guys
I'm investigating the cap file now. And I do not know how to create the CONSTANT_SuperMethodref of external class (Constant Pool Component) in CAP file. I only can create the CONSTANT_SuperMethodref of internal class
This is how I did
package com.superwallet
public class SuperWallet {
public static short super_x = 10;
public static short super_y = 12;
public short super_z = 8;
public static void super_tinhhieu(short a, short b){
super_x = (short) (a - b);
public void super_tinh(short a, short b){
super_y = (short) (a - b);
package com.epurse;
* @author Bui Le Duy
public class EPurse extends SuperWallet{
public static short epurse_x = 10;
public static short epurse_y = 11;
public short epurse_z = 12;
public EPurse(){
super();
public static void epurse_tinh(short a, short b){
epurse_x = (short) (a + b);
public void epurse_test(short a, short b){
epurse_y = (short) (a-b);
super.super_tinh(a, b);
}Package com.wallet
public class Purse extends SuperWallet{
public static short purse_x = 5;
public static short purse_y = 1;
public short purse_z = 13;
protected Purse(){
super();
public static void purse_tinh(short a, short b) {
purse_y = (short) (a + b);
public void purse_test(short a, short b) {
purse_x = (short) (a + b);
super.super_tinh(a, b);
}Lastly, the wallet applet in package com.wallet
public class Wallet extends Applet{
public void funcc() {
Purse p = new Purse();
EPurse ep = new EPurse();
//Invoke their own virtual methods
p.purse_test(s33, p.purse_z);
ep.epurse_test(s33, ep.epurse_z);
//Invoke their super virtual methods
p.super_tinh(p.super_z, ep.super_z);
ep.super_tinh(p.super_z, ep.super_z);
public void funcc_static() {
//Invoke their own static methods
Purse.purse_tinh(Purse.purse_x, Purse.purse_y);
EPurse.epurse_tinh(EPurse.epurse_x, EPurse.epurse_y);
//Invoke super static method
Purse.super_tinhhieu(Purse.super_x, Purse.super_y);
}With this, I can only create CONSTANT_SuperMethodref for internal class. Did I do something wrong??
Thanks in advance
JasonWell, I tried different ways and nothing can reach my expectation :| --> I almost harbour the idea that there's no SuperMethodref for external class as well
However, things written in spec seems to be subtle to me. Let me quote it for you (JC 2.2.1, chap 6.7.2)
The class referenced in the CONSTANT_SuperMethodref_info structure must be the class that defines the method that contains the Java language-level super invocation.
The token item of the CONSTANT_SuperMethodref_info structure represents the virtual method token (Section 4.3.7.6, “Virtual Methods” on page 4-9) of the referenced method. Unlike in the CONSTANT_VirtualMethodref_info structure, the virtual method token is defined within the scope of the hierarchy of the superclass of the class indicated by the class item. If the referenced method is public or protected the high bit of the token item is zero. If the referenced method is package-visible the high bit of the token item is one. In the latter case the class item must represent a reference to a class defined in this package and at least one superclass of the class that contains a definition of the virtual method must also be defined in this package.
Perhaps I'm not good at English (I'm not a native speaker), but would you mind to bold the line which tells us about the absence of SuperMethodref for external class in the whole definition above -
Javacard converting to CAP file
I'm trying to generate a .cap file for some applet source provided externally, and capgen/converter are throwing an IllegalArgumentException when I attempt to generate a .cap (either straight from .opt or using capgen on a pre-generated .jca file).
The output I'm getting is pretty basic even in verbose mode:
java.lang.IllegalArgumentException
Cap file generation failed.
conversion completed with 1 errors and 0 warnings.
I've tried with or without the -noverify flag.
I'm using Java JDK Standard Edition (build 1.4.1_02) to run the converter, and compile the source files. And I've tried the converter in the Sun Java Card Development kit 2.2.1.
also I'm using GlobalPlatform 2.1.1.
When using JDK 1.3 version, success generate CAP File.. but 1.4 version is throw java.lang.IllegalArgumentException.
Help me.. Thanks,
Edited by: StrangeWorld on Jun 7, 2010 6:19 PMHi,
You need to target JDK 1.3 to compile classes to convert to a cap file. You can however do this with any newer JDK (I use Java 6). You need to specify the -source 1.3 and -target 1.1 arguments (this instructs the compiler to target and older JVM).
You should then be able to convert your class into a CAP file. If this doesn't work switch the values for source and target as this is off the top of my head and I usually get the back to front.
Cheers,
Shane -
I have been trying to make sense of the CAP file structure using this Hello World example: Java Card “Hello World” Applet | Java Card
The class component of its CAP file is given as:
06 00 0c 00 80 03 00 ff 00 07 01 00 00 00 1c
From the JCVM specification, 06 is the tag and 00 0c gives the size.
How can the signature_pool_length be 00 80 = 128 when there clearly aren't enough bytes in the component?
Thank you.Hi Shane,
do you see something wrong int the fourth item of signature pool array that i separate it out of other elements?
its first byte is A3 (HEX) = 163 (DEC) which is nibble count value. Therefore, according to the spec, if nibble count is odd then the last item in nibble array must be 0x0. However this concept is not respected in this example.
Can you spend some time to clarify this situation?
thanks,
Hoang Long
Edited by: user5138836 on Jun 14, 2011 6:42 PM -
Error in convertionof .class to CAP file
we are using java_card_kit-2_2_1 with j2sdk-1.4.2_12 for developing Applet for Smart card.We are new to the javacard enviornment.We are testng with the avvailable samples in java card kit.
The steps we are following is given below:
1.Convertion of java file to class file.
Class file generated in the path- c:\java_card_kit-2_2_1\samples\src\com\sun\javacard\samples\Helloworld
2. convertion of class file to Cap file:
we are using one batch file -run.bat
run.bat:
set CLASSES=%JCHOME%\lib\apduio.jar;...;%JC_HOME%\lib\api.jar;%JC_HOME%\lib\capdump.jar;
xcopy /s %JC_HOME%\api_export_files\*.* exp
java -classpath %_CLASSES% samples.src.com.sun.javacard.samples
converter -config HelloWorld.opt
3.We are running the run.bat file when exp folder is created having the .exp files init.
4.Then we are using the converter as:
converter -config ...HelloWorld.opt.
the .opt file contains..
-out EXP JCA CAP
-exportpath C:\java_card_kit-2_2_1\api_export_files
-applet 0xa0:0x0:0x0:0x0:0x62:0x3:0x1:0xc:0x1:0x1
com.sun.javacard.samples.HelloWorld.HelloWorld
com.sun.javacard.samples.HelloWorld
0xa0:0x0:0x0:0x0:0x62:0x3:0x1:0xc:0x1 1.0
Then the error is generated as:
error:export file framework.exp of package javacard.framework not found.
the above run.bat file the line below needs explanation..
java -classpath %_CLASSES% samples.src.com.sun.javacard.samples
converter -config HelloWorld.opt
plz reply
Message was edited by:
jit_hkconverting .class files to a loadable format for the smart card creates .cap file and .exp files. the .exp files specify information about any (shared) libraries.
i dunno how exactly to do it with the java card kit from sun. look into the jcop converter tric.jar . -
What is the wrong about converting the .class of api of jc to .cap files?
hi everyone
l tried to convert the .class filses of api to .cap files,there are some wrongs please help me!
___the .opt file:___
-out JCA CAP EXP
-exportpath D:\jCDK2_2_1\api_export_files
-classdir D:\workspace\framework
framework
0x0a:0x0:0x0:0x0:0x62:0x1:0x01 1.2
converter result:
c:documents and settings\administrator>converter -config d:\workspace\framework\framework.opt
java card 2.2.1 class files converter ,version 1.3
copyright 2003 sun microsystems,inc.all rights reserved.use is subject to license terms
error:javacard.framework.JCSystem:unsupported method modifier native in method isTransient.
error:javacard.framework.JCSystem:unsupported method modifier native in method makeTransientBooleanArray.
error:javacard.framework.JCSystem:unsupported method modifier native in method makeTransientByteArray
error:javacard.framework.JCSystem:unsupported method modifier native in method makeTransientShortArray
conversion completed with 13 errors and 0 warnings.
thanks in advanceHi,
I am not sure why you are trying to convert the API packages into CAP files. The JAR files that ship with the JCDK are only stub implementations for compiling against. They do not have an actual implementation. You will find methods returning a short always return 0 etc. You should only need to convert your code into CAP files. You will just need to reference the .exp files that are included in the JCDK for the API so your code can be converted.
Cheers,
Shane -
Why require cap file why not only class file as in java
why do we convert .class to .cap file why not simply load the .clss file to the card
If Java Card has to accept .class file, it's certain
that JCVM developers are going to spend more and more
nights in their office.
Just kidding. I'm one of them.LOL :)
Put the CAP file converter on-card. -
Wrong CAP file version error message
I'm trying to write a loader application that will send a CAP file into JavaCard, and then install it automatically.
I have developed my JavaCard Applet by using Eclipse3.1.0 and JCOP30.
After running my JavaCard Applet by Eclipse, I got its CAP file in folder [b\bin\FVSCardPkg\javacard\[/b]
But when I run my loader application with this CAP file, the error message will display:
EX: msg Wrong CAP file version, class class com.ibm.jc.JCException
Wrong CAP file version
at com.ibm.jc.CapFile.parseHeader(Unknown Source)
at com.ibm.jc.CapFile.readCapFile(Unknown Source)
at com.ibm.jc.CapFile.<init>(Unknown Source)
at LoaderPkg.loader.load(loader.java:35)
at LoaderPkg.loader.main(loader.java:20)
This is my loader application source code:
import java.io.*;
import com.ibm.jc.*;
import com.ibm.jc.terminal.*;
* Sample /**
* Sample loader. Demonstrates how to use the offcard API to download
* a cap-file on a JCOP41V22 Engineering sample card and listing of applets loaded will
* follow.
public class loader{
private final static String termName = "pcsc:4"; // Real card
// private final static String termName = "Remote"; // Simulator
protected static final byte[] JCOP_CARD_MANAGER_AID = { (byte) 0xa0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00};
protected static final byte defaultInstallParam[] = { -55, 0 };
static String[] capFileName={"D:/MyCardPkg.cap"};
public static void main(String[] args){
try{
loader l = new loader();
l.load();
}catch(Exception e){
System.err.println("EX: msg " + e.getMessage() + ", class " + e.getClass());
e.printStackTrace(System.err);
System.exit(0);
//Likewise for simulation, be patient the port takes time to close.
//Use command line "netstate" to check the disapperance of the port before
// activating JCShell command to read the simulated card.
private loader(){}
private void load() throws Exception{
CapFile capFile = new CapFile(capFileName[0], null);
System.out.println("Package name: " + capFile.pkg);
byte[][] applets = capFile.aids;
if ((applets == null) || (applets.length == 0)){
throw new RuntimeException("no applets in cap file");
// Get connection to terminal, take note that jcop.exe is required to be activated
// in simulation mode.
System.out.println("Open terminal ...");
//Make sure that the simulator jcop.exe is activated before unmarking this satement
//Remember to delete the downloaded applet before running otherwise error is
//expected if the simulator finds the existence of the applet with the
//same pakage name ID and AID
//Issue /close command at "cm" prompt if the card is in use,, ie it should
//have "-" prompt. Be patient that the port takes time to close. Use command line
//"netstate" to check the disapperance of the port before running.
// pcsc:4=Card Terminal Or Remote=LocalHost Terminal
JCTerminal term = JCTerminal.getInstance(termName, null);
//For real JCOP41V22 card, please unmark this statement and delete the downloaded
//applet before running. Error expected if the card finds the existence of the applet
//with the same pakage name ID and AID
//Issue /close command at "cm" prompt if the card is in use,, ie it should
//have "-" prompt.
term.open();
// Add in this statement for real card which requires some response time
term.waitForCard(5000);
// Create a logging terminal spitting out the APDUs on standard out
TraceJCTerminal _term = new TraceJCTerminal();
_term.setLog(new PrintWriter(System.out));
_term.init(term);
term = _term;
// Get JavaCard representative, passing NULL resets card and returns ATR
System.out.println("Get card ...");
JCard card = new JCard(term, null, 2000);
// Get the off-card representative for the card manager and use it to
// select the on-card CardManager
System.out.println("Select card manager ...");
CardManager cardManager = new CardManager(card, CardManager.daid);
cardManager.select();
// For downloading something, we have to be authenticated to card manager.
// For this, the keys must be set. The keys to use should of course
// be configurable as well.
byte[] dfltKey = c2b("404142434445464748494a4b4c4d4e4f");
cardManager.setKey(new OPKey(255, 1, OPKey.DES_ECB, dfltKey));
cardManager.setKey(new OPKey(255, 2, OPKey.DES_ECB, dfltKey));
cardManager.setKey(new OPKey(255, 3, OPKey.DES_ECB, dfltKey));
cardManager.setKey(new OPKey(1, 1, OPKey.DES_ECB, c2b("707172737475767778797a7b7c7d7e7f")));
cardManager.setKey(new OPKey(1, 2, OPKey.DES_ECB, c2b("606162636465666768696a6b6c6d6e6f")));
cardManager.setKey(new OPKey(1, 3, OPKey.DES_ECB, c2b("505152535455565758595a5b5c5d5e5f")));
System.out.println("init Update ...");
cardManager.initializeUpdate(255,0);
System.out.println("Authenticate to card manager ...");
cardManager.externalAuthenticate(OPApplet.APDU_CLR);
// And load the cap-file, do not forget to call installForLoad
System.out.println("Loading cap-file ...");
byte[] cardManagerAid = cardManager.getAID();
cardManager.installForLoad(capFile.pkgId,0, capFile.pkgId.length, cardManagerAid, 0, cardManagerAid.length, null, 0, null, 0, 0, null, 0);
cardManager.load(capFile, null, CardManager.LOAD_ALL, null, cardManager.getMaxBlockLen());
byte[] capaid = capFile.aids[0];
System.out.println("Finished loading !");
// Install applet, we try to install the first applet given in the
// cap file, and try to instantiate it under the same AID as given for its
// representation in the cap file. No installation data is passed.
System.out.println("Installing applet ...");
cardManager.installForInstallAndMakeSelectable(capFile.pkgId, 0, capFile.pkgId.length, capaid,0, capaid.length, capaid, 0, capaid.length, 0, defaultInstallParam, 0, defaultInstallParam.length, null, 0);
System.out.println("Install succeeded!");
// synchronize state with on-card card manager
System.out.println("Update!");
cardManager.update();
// Print information regarding card manager, applets and packages on-card
JCInfo info = JCInfo.INFO;
System.out.println("\nCardManager AID : " + JCInfo.dataToString(cardManager.getAID()));
System.out.println("CardManager state : " + info.toString("card.status", (byte) cardManager.getState()) + "\n");
//Echountered error 6A 86 with this statement:Object[] app = cardManager.getApplets(CardManager.GET_APPLETS,
//CardManager.CVM_FORMAT_HEX, true);
//Solved the bug by playing the integers in arg0 and arg1.
Object[] app = cardManager.getApplets(1, true);
if (app == null) {
System.out.println("No applets installed on-card");
} else {
System.out.println("Applets:");
for (int i = 0; i < app.length; i++) {
System.out.println(info.toString("applet.status", (byte) ((OPApplet) app).getState()) + " " + JCInfo.dataToString(((OPApplet) app[i]).getAID()));
// List packages on card
// Encountered error with this statement:Object[] lf = cardManager.getLoadFiles(CardManager.CVM_FORMAT_HEX, true);
// Solved the bug by setting arg0 = 0,
Object[] lf = cardManager.getLoadFiles(true);
if (lf == null) {
System.out.println("No packages installed on-card");
} else {
System.out.println("Packages:");
for (int i = 0; i < lf.length; i++) {
System.out.println(info.toString("loadfile.status", (byte)((LoadFile) lf[i]).getState()) + " " + JCInfo.dataToString(((LoadFile) lf[i]).getAID()));
term.close();
static String numbers = "0123456789abcdef";
private byte[] c2b(String s) {
if (s == null) return null;
if (s.length() % 2 != 0) throw new RuntimeException("invalid length");
byte[] result = new byte[s.length() / 2];
for (int i = 0; i < s.length(); i += 2) {
int i1 = numbers.indexOf(s.charAt(i));
if (i1 == -1) throw new RuntimeException("invalid number");
int i2 = numbers.indexOf(s.charAt(i + 1));
if (i2 == -1) throw new RuntimeException("invalid number");
result[i / 2] = (byte) ((i1 << 4) | i2);
return result;
How to solve this problem?
Thank you in advance.I'm not understanding if your cap file is in "b\bin\FVSCardPkg\javacard\", then why are you loading "D:/MyCardPkg.cap"?
The issue isn't with your off card application, but the cap file version. Look at the cap file components in JCVM specification. I believe it's the Header component. The major, minor should match your card but not greater. In other words, your can't load a 2.2 on a 2.1 card, but a 2.1 can load on a 2.2 -
Cap file Components size limit ( ? )
Hello,
I'm wondering if there is a limitation on the Cap file internal components size.
as specified in the JVM Spec from SUN, a cap file consists on several elements (byte sequences) : Header.cap , Class.cap, StaticField.cap, etc.
Does a component have a size limit ?
I'm asking this question because I'm facing serious problem when loading Applets on Gemplus SIM cards(GemWpressoV3 ) : the load process interrupts sudenly and the card responds with 6F00 !!
For info, the Method.cap components is 11748 bytes !!
Thank you for your Help and Info
Kartagoshere is a complete description of the Cap I can't load :
Header.cap (29 Bytes)
Directory.cap (34 Bytes)
Import.cap (62 Bytes)
Applet.cap (23 Bytes)
Class.cap (94 Bytes)
Method.cap (8484 Bytes)
StaticField.cap (6312 Bytes)
ConstantPool.cap (925 Bytes)
RefLocation.cap (1411 Bytes)
Descriptor.cap (2340 Bytes) -
Hello !!
I'm using the command verifycap verify the integrity of a CAP file and export files. the problem is that the command returns the following error:
Error: In class descriptor Descriptor[1]:
Field number 1:
Inconsistency on class reference in instance field
I've seen the docs related to the CAP file format (Java Card 2.1.1 Virtual Machine Specification), but I haven�t found the solution for this problem.
I would appreciate some help!
Thanks, SidneyThere was a bug in cJDK 2.1.1 converter, in descriptor
component. It was fixed in 2.1.2. I think that you are
trying to test 'old' cap file.
Can this error be related to CAP file errormentioned before?
No, it can't. The descriptor component is not
installed on card at all. The installer found that you
are trying to install the package with duplicate AID,
i.e. card already contains package with this AID.Hello Alb!!
Thank you for helping me, but I guess the problem's not what you mentioned, cause I'm using the 2.1.2 version. About the duplicate package AID error, the problem can't be an already existing package, cause I haven't downloaded the CAP file to a card yet, I'm just testing it with the jcwde and apdutool. And there's more: even so, I've changed the package AID, and the error succeeded.
So once more, do you have any suggestion?
Sidney -
Tokens are diffirent between CAP file and Export File
hi Safamer, hi all guys.
firstly, thanks all for concerning my issue.
As i know, java card technology link components base on TOKEN.
But the question is: the token in Export file and in the CAP file are different. So, how can off-card installer can link everything.
For example.
My_Package1:
Class1:
protected field1
private field2
public filed3
---> in the ExportFile, i have token for filed1 and field3 are 0 and 1 correspondingly. But in the CAP, these are not.
Thanks for your answer.
Edited by: hoan_micheal on Jun 14, 2011 1:41 AMdear guys!
I check very careful for this issue. And the results are:
- With the instance Field, virtual method ( i mean non-static), the token in the ExportFile and the token in the CAPFile is SAME
- with the static Filed and STATIC Method, the token is different and i don't see any rule to link these tow value. For example
--------------------------------------------------------------------CAP file --------------------------------------------ExportFile
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\public----------private --------------------------------------token
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\token-----------token------------------------------------------
public........static short sf1....=......1------------12---------------------------------------------------------->0
private......static short sf2....=......2----------------------------21
protected..static short sf3....=......3------------14---------------------------------------------------------->1
private......static short sf4....=......4----------------------------23
public .......static short sf5....=......5------------16---------------------------------------------------------->2
public...... static short sfn1-------------------------0----------------------------------------------------------> 3
private......static short sfn2--------------------------------------- 6
protected..static short sfn3-------------------------2----------------------------------------------------------> 4
...............static short sfd1....=.....7-------------------------- 25
..............static short sfd2....=.....8
public......static byte sb1....=......1------------18---------------------------------------------------------->5
private......static byte sb2....=......2---------------------------27
protected.static byte sb3....=......3------------19---------------------------------------------------------->6
private......static byte sb4....=......4---------------------------28
public...... static byte sb5....=......5------------20---------------------------------------------------------->7
public ......static byte sbn1-----------------------4------------------------------------------------------------->8
private......static byte sbn2-------------------------------------------10
protected..static byte sbn3-----------------------5 ---------------------------------------------------------->9
...............static byte sbd1....=....10------------------------------29
...............static byte sbd2-------------------------------------------11
- with the Class in a package, the token is diffent. For example.
Package library{----------------------------exportFile Token----------------------------CapFIle--- the Offset in the Class Component
............. Class1--------------------------->not ---------------------------------------------->0
public.....Class2---------------------------->0-------------------------------------------------->1
public.....Class3---------------------------->1-------------------------------------------------->2
............Class4---------------------------->not------------------------------------------------>3
public.....Class5---------------------------> 2 ------------------------------------------------> 4
Those are really different. Could you help me to understand this.
Thanks a lot -
ERROR while generating CAP file
Hello,
Iam trying to generate a cap file of JCRMI applet. Iam getting the following errors while generating a CAP file. Can anybody help me.
Thanks in advance,
With Regards,
Abhishek Goud
{color:#ff0000}{color:#008080}*C:\Documents and Settings\Administrator\Desktop\Demo>converter -classdir C:\jav*
a_card_kit-2_2_2\lib -exportpath C:\java_card_kit-2_2_2\api_export_files;C:\java
cardkit-2_2_2\lib -applet 0xa0:0x00:0x00:0x00:0x62:0x03:0x01:0x08:0x01 PurseAp*
plet com.sun.javacard.samples.RMIDemo 0xa0:0x00:0x00:0x00:0x62:0x12:0x34 1.3
{color}
Java Card 2.2.2 Class File Converter, Version 1.3
Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to lic
ense terms.
warning: You did not supply export file for the previous minor version of the pa
ckage
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported type long of
field serialVersionUID.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode ifnull in clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
in clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
okestatic in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method class$(java.lang.String) of class com.sun.javacard.s
amples.RMIDemo.PurseImpl_Stub.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode ane
warray in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode aas
tore in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
okevirtual in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method getMethod(java.lang.String, java.lang.Class) of clas
s java.lang.Class.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode ifnul
l in clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
in clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
okestatic in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method class$(java.lang.String) of class com.sun.javacard.s
amples.RMIDemo.PurseImpl_Stub.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode ane
warray in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode aas
tore in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
okevirtual in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method getMethod(java.lang.String, java.lang.Class) of clas
s java.lang.Class.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode ifnul
l in clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
in clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
okestatic in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method class$(java.lang.String) of class com.sun.javacard.s
amples.RMIDemo.PurseImpl_Stub.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode ane
warray in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
okevirtual in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method getMethod(java.lang.String, java.lang.Class) of clas
s java.lang.Class.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode ifnul
l in clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
in clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
okestatic in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method class$(java.lang.String) of class com.sun.javacard.s
amples.RMIDemo.PurseImpl_Stub.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode ane
warray in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
okevirtual in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method getMethod(java.lang.String, java.lang.Class) of clas
s java.lang.Class.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode ifnul
l in clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
in clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
okestatic in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method class$(java.lang.String) of class com.sun.javacard.s
amples.RMIDemo.PurseImpl_Stub.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode ane
warray in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode ifnul
l in clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
in clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
okestatic in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method class$(java.lang.String) of class com.sun.javacard.s
amples.RMIDemo.PurseImpl_Stub.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode aas
tore in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
okevirtual in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method getMethod(java.lang.String, java.lang.Class) of clas
s java.lang.Class.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
in clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode pop i
n clinit method, try a different compiler.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode new
in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
okespecial in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method <init>(java.lang.String) of class java.lang.NoSuchMe
thodError.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode ath
row in clinit method.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of method class$.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method forName(java.lang.String) of class java.lang.Class.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported return type
String of invoked method getMessage() of class java.lang.Throwable.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method <init>(java.lang.String) of class java.lang.NoClassD
efFoundError.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported long type co
nstant.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java
*.lang.Object, long) of class java.rmi.server.RemoteRef.*
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported String type
constant.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method <init>(java.lang.String, java.lang.Exception) of cla
ss java.rmi.UnexpectedException.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported long type co
nstant.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java
*.lang.Object, long) of class java.rmi.server.RemoteRef.*
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported String type
constant.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method <init>(java.lang.String, java.lang.Exception) of cla
ss java.rmi.UnexpectedException.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported long type co
nstant.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java
*.lang.Object, long) of class java.rmi.server.RemoteRef.*
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported String type
constant.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method <init>(java.lang.String, java.lang.Exception) of cla
ss java.rmi.UnexpectedException.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported long type co
nstant.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java
*.lang.Object, long) of class java.rmi.server.RemoteRef.*
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported String type
constant.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method <init>(java.lang.String, java.lang.Exception) of cla
ss java.rmi.UnexpectedException.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported long type co
nstant.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java
*.lang.Object, long) of class java.rmi.server.RemoteRef.*
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported String type
constant.
error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
pe String of invoked method <init>(java.lang.String, java.lang.Exception) of cla
ss java.rmi.UnexpectedException.
{color}
conversion completed with 73 errors and 1 warnings.It seems there is a variable of type "long" in your applet. The "long" type is not supported by Java Card, so you should remove all variables with type "long".
Otherwise, without the source code, it is difficult to help you find out what's wrong. -
Pls help with .CAP file.
Hi.
I read a lot about how to write java applet for smart card and after read a lot about how to convert .class file into a .CAP file. But I don't know where to find informatin about what to do further. Pls can you tell or give link to a text which explains how to install .CAP file on a smart card and which tool to use in order to save .CAP file on a smart card.
ThxIt depends what installer/deletion manager your card supports. Most likely it is GlobalPlatform. Check out GlobalPlatform 2.1.1 card specification.
-
How to load the .cap file in a Smart Card?
Dear All,
Hello..!!
I am using JCDK 2.2 and have used Eclipse JCDK.
I have written a simple read/write applet and created a .cap file using Eclipse's Converter Java Card tool.
What is the next step to be done?
I have a smart card device and have installed its drivers.
When do the APDU commands come into picture?
Expecting help.
Thanks a lot.
Regards,
SurilSuril Sarvaiya wrote:
Hi Shane....
Thnx a lot....
I have downloaded GP-Shell 1.4.4
When I open its application and write any command and press enter ; the app window closes immendiately.
Can you please help me on this?
One more thing Shane......
I'm writig a java class using javax.smartcardio
I have installed drivers of Omnikey 3021
but the TerminalFactory is not detecting it?
Any idea on that?
Thanks again...
Regards,
SurilHi all,
Is Mr. thread starter has solved his problem?
I profit this thread to post my question. I'm working with new environment and I have problem loading cap file into my smartcard.
specification come first :-)
- My smartcard is said to be JC2.2.1 and GP2.1.1 compatible
- My code (for testing) is written in Java under eclipse Helios service 2 with JavaCard plugin (for JC2.2.2)
I compile my code with JDK 1.3 (for compatible version) and using the JC plugin to generate cap file (along with exp and jca).
My problem is exactly the same as one that was posted in this forum about 2 years ago but is not answered :-)
[Problem Loading Application to Card |http://forums.oracle.com/forums/thread.jspa?threadID=1749334&tstart=420]
+ I successfully authenticate with smartcard
+ APDU command Install for Load is executed successfully
+ BUT the APDU command LOAD file fails with returned status word is 6424
For details, I post here my javacard applet code and APDU command executed with my tool:
package mksAuthSys;
import javacard.framework.APDU;
import javacard.framework.Applet;
import javacard.framework.ISO7816;
import javacard.framework.ISOException;
import javacard.framework.OwnerPIN;
public class Jcardlet extends Applet {
private final static byte[] myPIN = { (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04};
final static byte Jcardlet_CLA =(byte)0xB0;
final static byte VERIFY = (byte) 0x20;
final static byte PIN_TRY_LIMIT =(byte)0x03;
final static byte MAX_PIN_SIZE =(byte)0x08;
final static short SW_VERIFICATION_FAILED = 0x6300;
OwnerPIN pin;
private Jcardlet() {
pin = new OwnerPIN(PIN_TRY_LIMIT, MAX_PIN_SIZE);
pin.update(myPIN, (byte) 0, (byte) 4 );
register();
public static void install(byte bArray[], short bOffset, byte bLength)
throws ISOException {
new Jcardlet().register();
public boolean select() {
if ( pin.getTriesRemaining() == 0 ) return false;
return true;
public void deselect(){
pin.reset();
//@Override
public void process(APDU apdu) throws ISOException {
// TODO Auto-generated method stub
byte[] buffer = apdu.getBuffer();
if ((buffer[ISO7816.OFFSET_CLA] == 0) &&
(buffer[ISO7816.OFFSET_INS] == (byte)(0xA4))) return;
if (buffer[ISO7816.OFFSET_CLA] != Jcardlet_CLA)
ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
switch (buffer[ISO7816.OFFSET_INS]) {
case VERIFY: verify(apdu);
return;
default: ISOException.throwIt (ISO7816.SW_INS_NOT_SUPPORTED);
private void verify(APDU apdu) {
// TODO Auto-generated method stub
byte[] buffer = apdu.getBuffer();
// retrieve the PIN data for validation.
byte byteRead = (byte)(apdu.setIncomingAndReceive());
// check pin
// the PIN data is read into the APDU buffer
// at the offset ISO7816.OFFSET_CDATA
// the PIN data length = byteRead
if ( pin.check(buffer, ISO7816.OFFSET_CDATA,byteRead) == false )
ISOException.throwIt(SW_VERIFICATION_FAILED);
}And my APDU command:
Loading "D:\mksAuthSys.cap" ...
T - 80F28000024F00
C - 08A000000003000000079E9000
ISD AID : A000000003000000
T - 80E602001508F23412345610000008A00000000300000000000000
C - 009000
T - 80E80000C8C482018B010012DECAFFED010204000108F23412345610000002001F0012001F000C001500420012009D0011001C0000009F00020001000402010004001502030107A0000000620101000107A000000062000103000C0108F234123456100001002306001200800301000104040000003DFFFF0030004507009D000510188C0003188F00013D0610088C00028700AD007B000403078B0005188B00067A02308F00073D8C00088B00067A0110AD008B00096104037804780110AD008B000A7A0221198B000B2D1A0300
C - 6424
Stopped loading due to unexpected status words.Urgently look forward to hearing from you.
Thanks a bunch in advance
Best Regards,
JDL
Maybe you are looking for
-
Xslt error: the expression does not evaluate to a node-set
hi guys - i'm really down because i cannot find / understand my xsl error and i have to finish my work very very soon the error message (by using xalan to create from the xml file my html output) is the following: xslt error: the expression does not
-
How to solve problem :- rep-188-Report Server acccepts only Batch jobs
How to solve problem :- rep-188-Report Server acccepts only Batch jobs Report server :- 10gR1
-
I am trying to download i tunes onto my pc (Windows XP) but get an error saying that some existing files can not be deleted to be re installed. I have tried several time but to no avail.
-
Pictures, Videos and Music folder aren't showing!
Hey guys, I just bought a mac last night and just got around to playing with it today, I just checked out the finder and I see that my pictures, videos and music folders are missing (picture attached) do any of you know how to get these, I'm well new
-
How do I delete the U2 songs from my iTunes? Not just hide them, but DELETE them!
I want these things gone! I hate them and cannot get rid of them! And have several friends that want to know too! Please there has to be a way to get rid of this crap since we didn't ask for it to begin with!