Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

39
LINES

< > BotCompany Repo | #1004056 // BCEL - change source file name within .class - seems to work

JavaX source code [tags: use-pretranspiled] - run with: x30.jar

Uses 1311K of libraries. Click here for Pure Java version (493L/4K/12K).

!759

lib 1004055

import org.apache.bcel.classfile.ClassParser;
import org.apache.bcel.classfile.JavaClass;
import org.apache.bcel.classfile.Attribute;
import org.apache.bcel.classfile.SourceFile;
import org.apache.bcel.generic.*;

p {
  JavaClass c = new ClassParser (
main.class.getResourceAsStream("/main.class"), "main.class").parse();
  print(c.getSourceFileName());
  
  ClassGen g = new ClassGen(c);
  
  S newName = parseSnippetID(programID()) + ".javax";
  int nameIndex = g.getConstantPool().addUtf8(newName);
  
  for (Attribute attr : g.getAttributes())
    if (attr instanceof SourceFile) {
      g.removeAttribute(attr);
      break;
    }
    
  g.addAttribute(new SourceFile(
    g.getConstantPool().addUtf8("SourceFile"), 
    2,
    nameIndex,
    g.getConstantPool().getConstantPool()));
      
  c = g.getJavaClass();
  File f;
  c.dump(f = prepareProgramFile("main.class"));

  c = new ClassParser (f.getPath()).parse();
  print(c.getSourceFileName());
}

download  show line numbers  debug dex  old transpilations   

Travelled to 16 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ddnzoavkxhuk, gwrvuhgaqvyk, ishqpsrjomds, jtubtzbbkimh, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Snippet ID: #1004056
Snippet name: BCEL - change source file name within .class - seems to work
Eternal ID of this version: #1004056/1
Text MD5: b7e725761c703f2aa58b958e25979c49
Transpilation MD5: e47f417a70051c3b8154d668a45b4110
Author: stefan
Category: javax
Type: JavaX source code
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2016-08-05 14:38:02
Source code size: 1014 bytes / 39 lines
Pitched / IR pitched: No / No
Views / Downloads: 630 / 676
Referenced in: #1004069 - renameSourceInfoInClassFile