Skip to content
This repository was archived by the owner on Feb 17, 2022. It is now read-only.

Commit f85b0a2

Browse files
committed
Fix writing issues
1 parent a96de4a commit f85b0a2

File tree

4 files changed

+26
-3
lines changed

4 files changed

+26
-3
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
.idea
22
target
33
JavaClassLib.iml
4-
dependency-reduced-pom.xml
4+
dependency-reduced-pom.xml
5+
Testy.class

src/main/java/io/github/seggan/javaclasslib/JavaClass.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,13 @@ public void write(@Nonnull OutputStream out) throws IOException {
4545
out.write(ByteUtils.twoBytesFromInt(ClassAccessFlags.combine(classAccessFlags)));
4646
out.write(thisClass.getIndexBytes());
4747
out.write(superClass.getIndexBytes());
48-
out.write(new byte[]{0, 0});
48+
out.write(new byte[]{0, 0, 0, 0});
4949
out.write(ByteUtils.twoBytesFromInt(methods.size()));
5050
for (Method method : methods) {
5151
out.write(method.getBytes());
5252
}
5353
out.write(0);
54+
out.write(0);
5455
}
5556

5657
public List<ConstantPoolEntry> getConstantPool() {

src/main/java/io/github/seggan/javaclasslib/constantpool/ConstantPoolEntry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public final ConstantPoolTag getTag() {
3030
* @return the index of this constant pool entry
3131
*/
3232
public final int getIndex() {
33-
return constantPool.indexOf(this);
33+
return constantPool.indexOf(this) + 1;
3434
}
3535

3636
/**
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.github.seggan.javaclasslib.tests;
2+
3+
import io.github.seggan.javaclasslib.ClassAccessFlags;
4+
import io.github.seggan.javaclasslib.JavaClass;
5+
6+
import java.io.FileOutputStream;
7+
import java.io.IOException;
8+
9+
public class Test {
10+
11+
public static void main(String[] args) {
12+
13+
JavaClass javaClass = new JavaClass("Testy", "java.lang.Object", 16);
14+
javaClass.setClassAccessFlags(ClassAccessFlags.PUBLIC, ClassAccessFlags.FINAL);
15+
try (FileOutputStream outputStream = new FileOutputStream("Testy.class")) {
16+
javaClass.write(outputStream);
17+
} catch (IOException e) {
18+
e.printStackTrace();
19+
}
20+
}
21+
}

0 commit comments

Comments
 (0)