首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javac找不到symbol DefaultTableCellHeaderRenderer

javac找不到symbol DefaultTableCellHeaderRenderer
EN

Stack Overflow用户
提问于 2018-06-12 03:51:47
回答 2查看 861关注 0票数 0

你能告诉我在使用javac的时候什么是错误的吗?因为这个类是用Eclipse成功编译的。我给出以下CLI命令:

代码语言:javascript
复制
pardus@adige:/mylinuz/pocws/src/test/swing/component$ javac -verbose SortButtonRenderer.java
[parsing started SortButtonRenderer.java]
[parsing completed 12ms]
[search path for source files: .]
[search path for class files: /usr/lib/jvm/java-6-oracle/jre/lib/resources.jar,/usr/lib/jvm/java-6-oracle/jre/lib/rt.jar,/usr/lib/jvm/java-6-oracle/jre/lib/sunrsasign.jar,/usr/lib/jvm/java-6-oracle/jre/lib/jsse.jar,/usr/lib/jvm/java-6-oracle/jre/lib/jce.jar,/usr/lib/jvm/java-6-oracle/jre/lib/charsets.jar,/usr/lib/jvm/java-6-oracle/jre/lib/modules/jdk.boot.jar,/usr/lib/jvm/java-6-oracle/jre/classes,/usr/lib/jvm/java-6-oracle/jre/lib/ext/dnsns.jar,/usr/lib/jvm/java-6-oracle/jre/lib/ext/sunpkcs11.jar,/usr/lib/jvm/java-6-oracle/jre/lib/ext/localedata.jar,/usr/lib/jvm/java-6-oracle/jre/lib/ext/sunjce_provider.jar,.]
[loading java/awt/Component.class(java/awt:Component.class)]
[loading javax/swing/JLabel.class(javax/swing:JLabel.class)]
[loading javax/swing/JTable.class(javax/swing:JTable.class)]
SortButtonRenderer.java:8: package sun.swing.table does not exist
import sun.swing.table.DefaultTableCellHeaderRenderer;
                      ^
SortButtonRenderer.java:10: cannot find symbol
symbol: class DefaultTableCellHeaderRenderer
public class SortButtonRenderer extends DefaultTableCellHeaderRenderer {
                                        ^
[loading java/lang/Object.class(java/lang:Object.class)]
[checking test.swing.component.SortButtonRenderer]
SortButtonRenderer.java:17: cannot find symbol
symbol  : variable super
location: class test.swing.component.SortButtonRenderer
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
        ^
[loading javax/swing/JComponent.class(javax/swing:JComponent.class)]
[loading java/awt/Container.class(java/awt:Container.class)]
[loading java/awt/image/ImageObserver.class(java/awt/image:ImageObserver.class)]
[loading java/awt/MenuContainer.class(java/awt:MenuContainer.class)]
[loading java/io/Serializable.class(java/io:Serializable.class)]
[loading javax/swing/TransferHandler.class(javax/swing:TransferHandler.class)]
[loading javax/swing/TransferHandler$HasGetTransferHandler.class(javax/swing:TransferHandler$HasGetTransferHandler.class)]
[loading javax/swing/SwingConstants.class(javax/swing:SwingConstants.class)]
[loading javax/accessibility/Accessible.class(javax/accessibility:Accessible.class)]
SortButtonRenderer.java:19: cannot find symbol
symbol  : method setHorizontalAlignment(int)
location: class test.swing.component.SortButtonRenderer
        setHorizontalAlignment(JLabel.CENTER);
        ^
[loading java/lang/String.class(java/lang:String.class)]
SortButtonRenderer.java:20: cannot find symbol
symbol  : method setText(java.lang.String)
location: class test.swing.component.SortButtonRenderer
        setText((value == null) ? "" : value.toString());
        ^
SortButtonRenderer.java:21: incompatible types
found   : test.swing.component.SortButtonRenderer
required: java.awt.Component
        return this;
               ^
[total 297ms]
6 errors

有趣的是,缺少的类,sun.swing.table.DefaultTableCellHeaderRenderer,在rt.jar中可用,编译器可以从rt.jar加载其他类,如java/awt/Color.class

代码语言:javascript
复制
package test.swing.component;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JTable;
import sun.swing.table.DefaultTableCellHeaderRenderer;

public class SortButtonRenderer extends DefaultTableCellHeaderRenderer {
    private static final long serialVersionUID = 1L;

    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
        setHorizontalAlignment(JLabel.CENTER);
        setText((value == null) ? "" : value.toString());
        return this;
    }
    //other methods removed
}

请注意:当我运行java8的javac时,仍然出现错误。但是java8的javac加上"endorseddirs /usr/lib/jvm/java-6-oracle/jre/lib“就可以了。

EN

回答 2

Stack Overflow用户

发布于 2018-06-12 04:19:20

您确定命令行和eclipse javac运行的是同一版本吗?(内存不足,但选项->search javac应该会显示哪个编译器),javac -version会在命令行上给出正确的版本。

编辑:是的,而且一定要摆脱太阳。*进口!它们只会导致更多的痛苦。

票数 0
EN

Stack Overflow用户

发布于 2021-03-09 12:42:18

如果您需要保留一个sun.*类,并且使用maven打包,请将此配置添加到maven-编译器-plugin中:

代码语言:javascript
复制
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <compilerArgs>
                    <arg>-XDignore.symbol.file</arg>
                </compilerArgs>
                <fork>true</fork>
        </configuration>
    </plugin>    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50805083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档