LiLittleCat / intellij-chatgpt

A plugin that integrates ChatGPT and other third-party mirror sites into JetBrains IDEs.一个将 ChatGPT 和其他第三方镜像网站整合到 JetBrains IDEs 的插件。
https://plugins.jetbrains.com/plugin/20629-chatgpt-tool
Apache License 2.0
142 stars 19 forks source link

java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 46 #21

Open mylovesaber opened 1 year ago

mylovesaber commented 1 year ago

idea报错,但Report and Clear All 按钮是灰的发送不了,只能发这里了

java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 46
    at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
    at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
    at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
    at java.base/java.util.Objects.checkIndex(Objects.java:359)
    at java.base/java.util.ArrayList.set(ArrayList.java:441)
    at com.lilittlecat.chatgpt.setting.ChatGPTSettingsConfigurable$3.setValue(ChatGPTSettingsConfigurable.java:187)
    at com.lilittlecat.chatgpt.setting.ChatGPTSettingsConfigurable$3.setValue(ChatGPTSettingsConfigurable.java:167)
    at com.intellij.util.ui.ListTableModel.setValue(ListTableModel.java:128)
    at com.intellij.util.ui.ListTableModel.setValueAt(ListTableModel.java:117)
    at com.intellij.util.ui.ListTableModel.setValueAt(ListTableModel.java:102)
    at java.desktop/javax.swing.JTable.setValueAt(JTable.java:2788)
    at java.desktop/javax.swing.JTable.editingStopped(JTable.java:4786)
    at java.desktop/javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:152)
    at java.desktop/javax.swing.DefaultCellEditor$EditorDelegate.stopCellEditing(DefaultCellEditor.java:375)
    at java.desktop/javax.swing.DefaultCellEditor.stopCellEditing(DefaultCellEditor.java:234)
    at com.intellij.openapi.ui.cellvalidators.StatefulValidatingCellEditor.stopCellEditing(StatefulValidatingCellEditor.java:78)
    at java.desktop/javax.swing.JTable.columnMarginChanged(JTable.java:4655)
    at java.desktop/javax.swing.table.DefaultTableColumnModel.fireColumnMarginChanged(DefaultTableColumnModel.java:604)
    at java.desktop/javax.swing.table.DefaultTableColumnModel.propertyChange(DefaultTableColumnModel.java:666)
    at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343)
    at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335)
    at java.desktop/javax.swing.event.SwingPropertyChangeSupport.firePropertyChange(SwingPropertyChangeSupport.java:93)
    at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268)
    at java.desktop/javax.swing.table.TableColumn.firePropertyChange(TableColumn.java:290)
    at java.desktop/javax.swing.table.TableColumn.firePropertyChange(TableColumn.java:296)
    at java.desktop/javax.swing.table.TableColumn.setWidth(TableColumn.java:519)
    at java.desktop/javax.swing.JTable$2.setSizeAt(JTable.java:3281)
    at java.desktop/javax.swing.JTable$5.setSizeAt(JTable.java:3371)
    at java.desktop/javax.swing.JTable.adjustSizes(JTable.java:3407)
    at java.desktop/javax.swing.JTable.adjustSizes(JTable.java:3375)
    at java.desktop/javax.swing.JTable.setWidthsFromPreferredWidths(JTable.java:3289)
    at java.desktop/javax.swing.JTable.doLayout(JTable.java:3175)
    at com.intellij.ui.table.JBTable.doLayout(JBTable.java:534)
    at java.desktop/java.awt.Container.validateTree(Container.java:1725)
    at java.desktop/java.awt.Container.validateTree(Container.java:1734)
    at java.desktop/java.awt.Container.validateTree(Container.java:1734)
    at java.desktop/java.awt.Container.validateTree(Container.java:1734)
    at java.desktop/java.awt.Container.validateTree(Container.java:1734)
    at java.desktop/java.awt.Container.validateTree(Container.java:1734)
    at java.desktop/java.awt.Container.validateTree(Container.java:1734)
    at java.desktop/java.awt.Container.validate(Container.java:1660)
    at java.desktop/javax.swing.RepaintManager$3.run(RepaintManager.java:760)
    at java.desktop/javax.swing.RepaintManager$3.run(RepaintManager.java:758)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:757)
    at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1908)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:779)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:730)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:724)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:749)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:909)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:756)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$5(IdeEventQueue.java:437)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:436)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
    at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:615)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:434)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:475)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:121)
    at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191)
    at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236)
    at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
    at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234)
    at java.desktop/java.awt.Dialog.show(Dialog.java:1080)
    at java.desktop/javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:880)
    at java.desktop/javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:676)
    at java.desktop/javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:647)
    at com.lilittlecat.chatgpt.action.FetchURLAction.actionPerformed(FetchURLAction.java:44)
    at com.intellij.ui.AnActionButton$AnActionButtonWrapper.actionPerformed(AnActionButton.java:208)
    at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:197)
    at com.intellij.openapi.actionSystem.impl.ActionButton.lambda$performAction$0(ActionButton.java:176)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:350)
    at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:176)
    at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:465)
    at java.desktop/java.awt.Component.processEvent(Component.java:6413)
    at java.desktop/java.awt.Container.processEvent(Container.java:2266)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5022)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2802)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:781)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:730)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:724)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:754)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:752)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:751)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:909)
    at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:831)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:753)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$5(IdeEventQueue.java:437)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:436)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
    at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:615)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:434)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:838)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:480)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:121)
    at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191)
    at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236)
    at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
    at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234)
    at java.desktop/java.awt.Dialog.show(Dialog.java:1080)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:743)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:467)
    at com.intellij.openapi.ui.DialogWrapper.doShow(DialogWrapper.java:1676)
    at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1634)
    at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:134)
    at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:107)
    at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:99)
    at com.lilittlecat.chatgpt.action.SettingsAction.actionPerformed(SettingsAction.java:24)
    at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:197)
    at com.intellij.openapi.actionSystem.impl.ActionButton.lambda$performAction$0(ActionButton.java:176)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:350)
    at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:176)
    at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:465)
    at java.desktop/java.awt.Component.processEvent(Component.java:6413)
    at java.desktop/java.awt.Container.processEvent(Container.java:2266)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5022)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2802)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:781)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:730)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:724)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:754)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:752)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:751)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:909)
    at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:831)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:753)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$5(IdeEventQueue.java:437)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:436)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
    at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:615)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:434)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:838)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:480)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
mylovesaber commented 1 year ago

所做操作是导入list: https://raw.githubusercontent.com/LiLittleCat/awesome-free-chatgpt/main/urls.json

然后选择了镜像站链接并保存,此时可以用,再关闭插件再打开就一直打不开页面,然后看到idea有提示报错

LiLittleCat commented 1 year ago

@mylovesaber 感谢反馈,

再关闭插件再打开就一直打不开页面

这里关闭插件是指关闭 Tool Window 吗?我按照你的步骤没有复现这个问题,如果是阻塞性的,可以尝试先把设置里的链接列表全删除,只剩初始的和默认的试试。

mylovesaber commented 1 year ago
java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
 at java.base/java.util.Vector.removeElementAt(Vector.java:549)
 at java.desktop/javax.swing.DefaultComboBoxModel.removeElementAt(DefaultComboBoxModel.java:153)
 at java.desktop/javax.swing.JComboBox.removeItemAt(JComboBox.java:789)
 at com.lilittlecat.chatgpt.setting.ChatGPTSettingsConfigurable$1.removeRow(ChatGPTSettingsConfigurable.java:114)
 at com.lilittlecat.chatgpt.setting.ChatGPTSettingsConfigurable$3.setValue(ChatGPTSettingsConfigurable.java:183)
 at com.lilittlecat.chatgpt.setting.ChatGPTSettingsConfigurable$3.setValue(ChatGPTSettingsConfigurable.java:167)
 at com.intellij.util.ui.ListTableModel.setValueAt(ListTableModel.java:116)
 at com.intellij.util.ui.ListTableModel.setValueAt(ListTableModel.java:102)
 at java.desktop/javax.swing.JTable.setValueAt(JTable.java:2787)
 at java.desktop/javax.swing.JTable.editingStopped(JTable.java:4785)
 at java.desktop/javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:152)
 at java.desktop/javax.swing.DefaultCellEditor$EditorDelegate.stopCellEditing(DefaultCellEditor.java:375)
 at java.desktop/javax.swing.DefaultCellEditor.stopCellEditing(DefaultCellEditor.java:234)
 at com.intellij.openapi.ui.cellvalidators.StatefulValidatingCellEditor.stopCellEditing(StatefulValidatingCellEditor.java:78)
 at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1049)
 at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:287)
 at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:287)
 at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:287)
 at java.desktop/java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:287)
 at java.desktop/java.awt.Component.processMouseEvent(Component.java:6645)
 at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3392)
 at com.intellij.ui.table.JBTable.processMouseEvent(JBTable.java:764)
 at java.desktop/ja

让别人帮尝试了下,微信单次消息字数限制只有开头这些提示,他那边具体操作是全新安装,也是idea内市场点击安装,然后打开,把那个镜像的json导入,然后点击保存后保存不了,应用和保存按钮都是灰色(不排除是他电脑问题),但直接关闭设置界面是可以的,然后直接重启了idea(全部idea窗口关闭),然后打开插件界面,点击设置,重新加入json链接,然后保存设置后关掉已经打开的默认openai的tab页,插件界面就关了,然后再点开。

细节操作有点忘了,但能确认的是我和别人都是首次安装此插件并进行设置的时候弹出报错信息,如果只是idea卸载插件并重启后再安装,不会复现问题,有什么办法可以卸载插件的时候把他的所有配置文件都删掉?

LiLittleCat commented 1 year ago

@mylovesaber

然后点击保存后保存不了,应用和保存按钮都是灰色

这里是这样的,编辑列表的话是即时生效,不用点击 Apply(应用),所以按钮是灰的。

然后保存设置后关掉已经打开的默认openai的tab页,插件界面就关了,然后再点开。

我试了下,较新的版本如果关闭了唯一打开的 Tab,会导致整个 Tool Window 关闭,暂时还没发现原因,可能内部 API 改了。但是关掉之后重新打开一个不会阻塞使用,这个问题我再看看。

有什么办法可以卸载插件的时候把他的所有配置文件都删掉?

设置的持久化文件是一个叫 ChatGPTSettingsState.xml 的文件,你可以用 everything 等全局搜索工具搜到,把它删了就行,IDEA 启动时会自动生成这个文件,当然只有默认配置。

BTW,你用的 IDE 的版本是多少?