在我的jar文件上使用ProGuard打破了我的电话class.getResource("").我已经看到在ProGuard手册中你需要指定-keepdirectories mypackage(手动链接).但是,我已经指定了该-keepdirectories选项,它似乎没有起作用.我认为我的ProGuard配置有问题.我也看过这个相关的问题,但是我也无法-keeppackagenames正常工作.
在我的代码中,我有类似于以下内容.
package com.example.mypackage;
public class MyClass{
public static void main(String [] args){
//url is always returned as null
URL url = MyClass.class.getResource("");
//do additional stuff including retrieving manifest file
}
}
Run Code Online (Sandbox Code Playgroud)
ProGuard配置
-injars ...
-outjars ...
-libraryjars ...
-dontoptimize
-keepattributes SourceFile,LineNumber,Table,LocalVariable*Table,*Annotation*
-renamesourcefileattribute SourceFile
-repackageclasses
-overloadaggressively
-keep public class com.example.mypackage.MyClass{
public static void main(java.lang.String[]);
}
-keepdirectories com.example.mypackage,com.example.mypackage.MyClass
-keeppackagenames com.example.mypackage,com.example.mypackage.MyClass
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个自定义单元格渲染器,它将在JTable的标题单元格中显示图像.我已经获得了使用Metal L&F的源代码,但我遇到了Nimbus的问题.在正常情况下,Nimbus显示图像就好了.但是,当表格排序时,Nimbus将绘制排序图标而不是我指定的图标.这与Metal L&F不同,因为它总是绘制我提供的图标.

有没有人知道有一种方法让Nimbus绘制图像,即使列是排序的?
我正在使用Java 6.29和Nimbus.我不能改变Java版本或L&F.
此外,我尝试做一些其他的解决方法,比如更改标签以使用HTML和img标签来显示图像,但这会产生奇怪的视觉效果.编辑文本和图像没有很好地对齐(即使img标签上有HTML对齐标签)这是一张图片,请注意Temp Hi列中的文本如何不对齐:

import java.awt.Component;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
public class ImageChangeDemo extends JFrame {
public static void main(String args[]) {
//comment out the code below to try in Metal L&F
try {
for(javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.
getInstalledLookAndFeels()) {
if("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
}
catch(Exception ex) {
ex.printStackTrace();
}
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new ImageChangeDemo().setVisible(true);
}
});
}
public …Run Code Online (Sandbox Code Playgroud)