Twitter Integration

Discussion in 'Plugin Development' started by CoderJim, Jul 21, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    CoderJim

    Hi there,
    I am looking to add twitter integration into my plugin (possibly using twitter4J http://twitter4j.org/), and I was just wondering does anybody have any experience with this API and how to use it + Is there a more effective api.
    Thanks in advance
    CoderJim
     
  2. Just a question. Why is this in the bukkit forums and not on java/twitter api forums?
     
    Shortninja66 likes this.
  3. Offline

    CoderJim

    @FisheyLP I just wanted to see if anybody had any experience with the api
     
  4. Offline

    Lolmewn

    I used it for a bit but never released it. Was pretty simple, can recommend.
     
  5. Offline

    CoderJim

    @Lolmewn I cant seem to find any articles about how to set it up, could you help out please :)
     
  6. Offline

    CoderJim

    Last edited: Jul 21, 2015
  7. Offline

    CoderJim

    Bump, still not solved :(
     
  8. Offline

    CoderJim

  9. Offline

    CoderJim

  10. @CoderJim
    Why does it not work? Does it error in console or something?
     
  11. Offline

    mythbusterma

    @CoderJim

    These are Bukkit forums. Not Twitter forums. Nobody here is going to help you.
     
  12. Offline

    567legodude

    @CoderJim Well, after 5 minutes of seeing this for the first time, you add it to your classpath, setup the configuration, then you can use it how you like.
    Stuff From Site (open)

    Setting up your config.
    Need this to post stuff.
    Code:
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
      .setOAuthConsumerKey("*********************")
      .setOAuthConsumerSecret("******************************************")
      .setOAuthAccessToken("**************************************************")
      .setOAuthAccessTokenSecret("******************************************");
    TwitterFactory tf = new TwitterFactory(cb.build());
    Twitter twitter = tf.getInstance();
    Posting something.
    Code:
    Status status = twitter.updateStatus(latestStatus);
        System.out.println("Successfully updated the status to [" + status.getText() + "].");
     
  13. Offline

    CoderJim

    @567legodude @mythbusterma @megamichiel
    I have added twitter4j as a dependancy and added this into the main class
    Code:
            Twitter twitter = TwitterFactory.getSingleton();
            Status status;
            try {
                status = twitter.updateStatus("this is a test");
                System.out.println("Successfully updated the status to [" + status.getText() + "].");
            } catch (TwitterException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    And it throws this error
    Code:
    [08:21:05 ERROR]: Could not load 'plugins/Twitter4J-Test.jar' in folder 'plugins'
    org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: twitter4j/TwitterException
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:135) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugins(CraftServer.java:291) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:738) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.Bukkit.reload(Bukkit.java:534) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:640) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:626) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:411) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:375) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:653) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:556) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
    Caused by: java.lang.NoClassDefFoundError: twitter4j/TwitterException
        at java.lang.Class.forName0(Native Method) ~[?:1.8.0_45]
        at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_45]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:64) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        ... 14 more
    Caused by: java.lang.ClassNotFoundException: twitter4j.TwitterException
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_45]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_45]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_45]
        at java.lang.Class.forName0(Native Method) ~[?:1.8.0_45]
        at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_45]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:64) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        ... 14 more
    
     
  14. Offline

    mythbusterma

    @CoderJim

    You're not exporting the code into the .jar file.
     
  15. Offline

    CoderJim

  16. Offline

    mythbusterma

  17. Offline

    CoderJim

    @mythbusterma What would be the best way to include it then?, I am using maven
     
  18. Offline

    Konato_K

    @CoderJim I don't use maven, but I think it's something called "shading"
     
  19. Offline

    CoderJim

    @Konato_K Hmm, have definitely heard of that before, gonna look into it now

    @mythbusterma @Konato_K So i have added shading to my pom but its still throwing a classnotfound exception
    Heres my pom.xml
    Code:
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>me.coderjim</groupId>
        <version>0.0.1</version>
        <artifactId>twitter</artifactId>
        <packaging>jar</packaging>
        <name>T4J-Test</name>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <repositories>
            <repository>
                <id>spigot-repo</id>
                <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
            </repository>
            <repository>
                <id>twitter4j.org</id>
                <name>twitter4j.org Repository</name>
                <url>http://twitter4j.org/maven2</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
        <build>
            <directory>/Users/Jim/Desktop/Server/plugins</directory>
            <finalName>${project.name}</finalName>
            <plugins>
                <plugin>
                    <artifactId>maven-eclipse-plugin</artifactId>
                    <version>2.9</version>
                    <configuration>
                        <additionalProjectnatures>
                            <projectnature>org.eclipse.m2e.core.maven2Nature</projectnature>
                        </additionalProjectnatures>
                        <buildcommands>
                            <buildcommand>org.eclipse.jdt.core.javabuilder</buildcommand>
                            <buildcommand>org.eclipse.m2e.core.maven2Builder</buildcommand>
                        </buildcommands>
                        <useProjectReferences>false</useProjectReferences>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.3.2</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>2.8</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>1.5</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <minimizeJar>true</minimizeJar>
                                <relocations>
                                    <relocation>
                                        <pattern>org.twitter4j.core</pattern>
                                        <shadedPattern>twitter4j</shadedPattern>
                                    </relocation>
                                </relocations>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
            <resources>
                <resource>
                    <directory>${basedir}/src/main/resources</directory>
                    <filtering>true</filtering>
                    <includes>
                        <include>plugin.yml</include>
                        <include>config.yml</include>
                    </includes>
                </resource>
            </resources>
        </build>
    
        <dependencies>
            <!-- Spigot API -->
            <dependency>
                <groupId>org.spigotmc</groupId>
                <artifactId>spigot-api</artifactId>
                <version>1.8.7-R0.1-SNAPSHOT</version>
                <scope>provided</scope>
            </dependency>
            <!--Bukkit API -->
            <dependency>
                <groupId>org.bukkit</groupId>
                <artifactId>bukkit</artifactId>
                <version>1.8.7-R0.1-SNAPSHOT</version>
                <scope>provided</scope>
            </dependency>
            <!-- Twitter4J API -->
            <dependency>
                <groupId>org.twitter4j</groupId>
                <artifactId>twitter4j-core</artifactId>
                <version>[4.0,)</version>
            </dependency>
        </dependencies>
        <dependencyManagement>
            <dependencies/>
        </dependencyManagement>
    </project>
    Heres the stacktrace
    Code:
    [09:51:55 ERROR]: Error occurred while enabling T4J-Test v1.0.0 (Is it up to date?)
    java.lang.AssertionError: java.lang.ClassNotFoundException: twitter4j.conf.PropertyConfigurationFactory
        at twitter4j.conf.ConfigurationContext.<clinit>(ConfigurationContext.java:43) ~[?:?]
        at twitter4j.TwitterFactory.<clinit>(TwitterFactory.java:39) ~[?:?]
        at inferna.twita.TwitBukkit.onEnable(TwitBukkit.java:14) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:356) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:316) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:740) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.Bukkit.reload(Bukkit.java:534) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:640) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:626) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:411) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:375) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:653) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:556) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
    Caused by: java.lang.ClassNotFoundException: twitter4j.conf.PropertyConfigurationFactory
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_45]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_45]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_45]
        at java.lang.Class.forName0(Native Method) ~[?:1.8.0_45]
        at java.lang.Class.forName(Class.java:264) ~[?:1.8.0_45]
        at twitter4j.conf.ConfigurationContext.<clinit>(ConfigurationContext.java:41) ~[?:?]
        ... 18 more
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 11, 2016
  20. Offline

    mythbusterma

    @CoderJim

    You probably didn't specify shading when you ran Maven.
     
  21. Offline

    Hawktasard

    @CoderJim
    You've asked it to relocate the package but you haven't actually asked it to put it in your jar (I think at least, no maven expert)
    Code:php
    1. <configuration>
    2. <artifactSet>
    3. <includes>
    4. <include>twitter4j thing here</include>
    5. </includes>
    6. </artifactSet>
    7. </configuration>
     
  22. Offline

    mythbusterma

  23. Offline

    Hawktasard

    @mythbusterma
    I know, I use maven. This configuration thing goes in the maven shade plugin.
    I'm not an expert but I'm pretty sure it can't relocate something that isn't in the jar.
     
  24. Offline

    CoderJim

    @mythbusterma When I ran maven i used the goals clean package
     
  25. Offline

    Hawktasard

    @CoderJim
    Check out my post, replace the "twitter4j thing here" with "org.twitter4j:*" (put the text before your relocations)
    edit: nevermind, it includes all the artifacts in the jar if you don't have a white/blacklist.
     
    Last edited: Jul 26, 2015
  26. Offline

    CoderJim

  27. Offline

    mythbusterma

    @Hawktasard

    Sorry, that's what I meant.


    @CoderJim

    Open the .jar and see if the files are in there.
     
  28. Offline

    CoderJim

    @mythbusterma @Hawktasard I opened the jar in JD-GUI and the twitter4j package is in there, but its still throwing a classnotfound exception

    Code:
    [09:05:15 ERROR]: Error occurred while enabling T4J-Test v1.0.0 (Is it up to date?)
    java.lang.AssertionError: java.lang.ClassNotFoundException: twitter4j.conf.PropertyConfigurationFactory
        at twitter4j.conf.ConfigurationContext.<clinit>(ConfigurationContext.java:43) ~[?:?]
        at twitter4j.TwitterFactory.<clinit>(TwitterFactory.java:39) ~[?:?]
        at me.coderjim.twita.Main.onEnable(Main.java:14) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:356) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:316) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:740) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.Bukkit.reload(Bukkit.java:534) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:640) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:626) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:411) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:375) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:653) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:556) [spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
    Caused by: java.lang.ClassNotFoundException: twitter4j.conf.PropertyConfigurationFactory
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_45]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot.jar:git-Spigot-b2c2c63-a3cb1bc]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_45]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_45]
        at java.lang.Class.forName0(Native Method) ~[?:1.8.0_45]
        at java.lang.Class.forName(Class.java:264) ~[?:1.8.0_45]
        at twitter4j.conf.ConfigurationContext.<clinit>(ConfigurationContext.java:41) ~[?:?]
        ... 18 more
    Ugh, cant solve this stupid exception :(

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 11, 2016
  29. Offline

    567legodude

    @CoderJim Maybe that's because "PropertyConfigurationFactory" is the class that it can't find.
     
Thread Status:
Not open for further replies.

Share This Page